STL - 常用函数总结

STL - 常用函数总结

一、vector

常 用 函 数 : 常用函数:

#include<vector>
vector<Type> V;
V.size();
V.empty();
V.clear();
V.front(),V.back();
V.push_back(),V.pop_back()
V.begin(),V.end()
reverse(V.begin(),V.end());   //翻转数组

访 问 方 式 与 正 常 数 组 访 问 相 似 , 同 时 支 持 直 接 比 较 运 算 ( 按 字 典 序 ) , 如 : 访问方式与正常数组访问相似,\\同时支持直接比较运算(按字典序),如: 访访()

vector<int> V1(4,3),V2(5,4);  //V1:3 3 3 3,V2:4 4 4 4 4,所以V1<V2

要 注 意 尽 量 减 少 内 存 空 间 的 申 请 次 数 , 比 较 耗 时 。 要注意尽量减少内存空间的申请次数,比较耗时。

二、string

常 用 函 数 : 常用函数:

#include<string>
string S;
S.substr(1,2);  //从下标1开始,长度为2的子串
S.substr(1);    //下标从1开始,直到尾部的子串
S.c_str();      //返回为C语言字符数组的首地址
S.size();
S.emtpy();
S.clear(); 
S.find(sub,pos);  //从S的pos位置开始,查找sub子串,若存在返回第一次出现的位置,否则返回-1
reverse(S.begin(),S.end());   //翻转字符串

三、queue

常 用 函 数 : 常用函数:

#include<queue>
queue<Type> Q;    
Q.size();
Q.emtpy();
Q.front();
Q.back();
Q.push();  //队尾插入
Q.pop();   //队头弹出
Q = queue<Type>();   //清空队列。  注意,queue没有clear函数

四、priority_queue(默认大根堆)

#include<queue>
#include<vector>
priority_queue<Type> Q;    //这样定义默认小根堆
priority_queue<int,vector<int>,greater<int>> Q;   //这样定义为大根堆
												//或者元素取负号入堆  
Q.size();
Q.emtpy();
Q.push();  //队尾插入
Q.pop();   //队头弹出
Q.top();   //堆顶元素
Q = priority_queue<Type>();   //清空队列。  priority_queue没有clear函数

五、stack

常 用 函 数 : 常用函数:

#include<stack>
stack<Type> S;    
S.size();
S.emtpy();
S.top();  //栈顶元素
S.pop();   //弹出栈顶
S.push();  //栈顶插入
S = stack<Type>();   //清空栈。  stack没有clear函数

六、deque(双端队列)

常 用 函 数 : 常用函数:

#include<deque>
deque<Type> deq;    
deq.size();
deq.emtpy();
deq.front()/deq.back();
deq.push_back()/deq.pop_back();
deq.push_front()/deq.pop_front();
deq.clear();
deq.begin();deq.end();
deq[];

缺 点 : 速 度 慢 缺点:速度慢

七、set、map、muiltiset、multimap

基 于 平 衡 二 叉 树 ( 红 黑 树 ) , 动 态 维 护 有 序 序 列 。 基 本 上 所 有 操 作 都 是 O ( l o g n ) 的 , 除 了 s i z e , e m p t y , c l e a r 函 数 常 用 函 数 : 基于平衡二叉树(红黑树),动态维护有序序列。\\基本上所有操作都是O(logn)的,除了size,empty,clear函数\\常用函数: ()O(logn)size,empty,clear

#include<set>
#include<map>
set<Type> s;   		//不能有重复元素
multiset<Type> ms;  //可以有重复元素
map<Type> mp;		//不能有重复元素
multimap<Type> mmp; //可以有重复元素
	size();
	emtpy();
	clear();
	begin()/end();  //--,++ 前驱与后继,O(logn)
	
//set/multiset
	insert();   //插入一个元素,O(logn)
	find(); 	//查找一个元素。不存在就返回end();
	count();	//返回某个元素的个数
	erase();
	// erase(x)   删除所有等于x的元素
	// erase(iterater)  删除这个迭代器
	lower_bound()/upper_bound();
	
//map/multimap
	insert();  //插入的是一个pair
	erase();   //删除的是pair或一个迭代器
	find();    //查找一个元素。不存在就返回end();
	mp[]/mmp[]; //当作数组使用,时间复杂度是O(logn)的
	lower_bound()/upper_bound();
	

八、unordered_map/unordered_set/unordered_multimap/unordered_multiset

所 有 操 作 与 七 类 似 , 且 增 删 改 查 的 时 间 复 杂 度 是 O ( 1 ) 的 , 但 是 不 支 持 l o w e r _ b o u n d 和 u p p e r _ b o u n d 即 − − , + + 。 即 与 排 序 有 关 的 所 有 操 作 是 不 支 持 的 。 所有操作与七类似,且增删改查的时间复杂度是O(1)的,但是不支持lower\_bound和upper\_bound即--,++。\\即与排序有关的所有操作是不支持的。 O(1)lower_boundupper_bound,++

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值