C++ STL 整理
一、vector
-
定义
#include< vector >
vector < int > a;//相当于开一个长度动态变化的int数组
vector < int > b[233];//相当于第一维长233,第二维长度动态变化的int数组(类似于二维数组)
struct node{……}
vector < node > c;//也可以用结构体作为类型 -
具体操作
① vector.size():返回实际长度
② vector.empty():判断vector是否为空
③ vector.clear():把vector清空
④ vector.front():返回第一个元素(相当于a[0])
⑤ vecor.beck():返回最后一个元素(相当于a[a.size()-1])
⑥ vector.push_back(x):将x插入vector尾部
⑦ vector.pop_back():删除vector的最后一个元素 -
vector也可保存有向图:
① 插入void insert(int x,int y,int z){ ver[x].push_back(y); edge[x].push_back(z); }
② 遍历
//从x出发的边
for (int i=0;i<ver.size();i++){
int y=ver[x][i],z=edge[x][i];
}
二、queue
- 定义
#include
queue < int > q;
struct node{……} queue q;
priority_queue <int ,vectorm< int > , greater/less > q;//定义一个小根堆/大根堆
typedef pair < int , int > pii;
priority_queue <pii ,vectorm< pii > , greater/less > q;//定义一个pair类型的小根堆/大根堆
(2) 具体操作
① q.front();//返回第一个元素(堆中是q.top())
② q.pop();//弹出第一个元素
③ q.push(x);//将x插入队尾
④ q.size();//返回长度
⑤ q.empty();//判断是否对空
三、deque
-
定义
#include< deque >
//定义与与上面的类似 -
具体操作
① q.front():返回队头元素
② q.back():返回队尾元素
③ q.push_back():从队尾入队
④ q.push_front():从队头入队
⑤ q.pop_front:从队头出队
⑥ q.pop_back:从队尾出队
⑦ q.clear()::清空队列
四、set(集合)
-
定义
#include
set < int > s;
struct node{……} set < node > s; -
具体操作
① s.size():返回集合长度
② s.empty():判断集合是否为空
③ s.clear():清空集合
④ s.insert(x):把元素插入集合中(如果已经出现,则不会重复插入)
⑤ s.find(x):在集合中查找x,并返回其位置;如果不存在,则返回s.size();(也许把)
⑥ s.lower_bound:查找集合中≥x的元素中最小的一个,并返回其位置
⑦ s.upper_bound:查找集合中>x的元素中最小的一个,并返回其位置
⑧ s.erase(x):删除集合中所有等于x的元素
⑨ s.count(x):饭盒集合中元素x的个数
五、map
-
定义
#include -
具体操作
① map.size(): 返回map的长度
② map.find(x):查找关键字x在map里的位置,如果没找到,则返回map.size/end()
③ []操作符:强行引用即可
六、栈
-
定义
#includ
stack < int > s;
struct node{……} stack < node > s; -
具体操作
① s.empty():判断是否栈空
② s.size():返回栈中元素的个数
③ s.top():返回栈顶元素
④ s.pop():弹出栈顶元素
⑤:s.push(x):将x压入栈顶