STL
zhz小蒟蒻
·
·
个人记录
1.list:
#include <list> //双向链表
#include <iterator> //迭代器
#include <algorithm> //for_each需要
$list<int>$ 变量名 (定义一个双向链表)
### 迭代输出:
```
for_each(a.begin(),a.end(),out);
void out(int n) { cout<<n; }
```
### list的函数:
**
$merge(x)$:将链表$x$与调用链表合并,合并前两个链表必须已经排序,合并后经过排序的链表保存在调用链表中,$x$为空;
$remove(val):$从链表中删除$val$的所有实例;
$sort():$对链表进行排序;
$splice(pos,x):$将链表$x$的内容插入到$pos$的前面,$x$将为空;
$unique(): $将连续的相同元素压缩为单个元素
$front()$ 返回链表开头的元素
$back()$ 返回链表末尾的元素
$push\_front(x)$ 从链表前面插入一个值$x
push\_back(x)$ 从链表末尾插入一个值$x
$pop\_back()$ 删除链表末尾的元素
$insert(x,a,a+n)$ 在链表第$x$个位置插入$a,a+n$的数
$erase(x,y)$ 删除$(x,y)$的数
$clear()$ 全部删除
**
## $2.stack
#include <stack> //栈函数
**
**
### stack的函数:
**
$push(x):$将$x$入栈
$pop():$ 删除栈顶;
$top():$ 返回指向栈顶元素的引用;
$size():$ 返回栈中元素个数;
$empty():$ 判栈空,若为空返回$true$。
**
## $3.queue
#include <queue> //队列函数
queue的函数:
**
$push(x):$将$x$入队
$pop():$ 删除队顶;
$front():$ 返回指向队顶元素的引用;
$size():$ 返回队中元素个数;
$empty():$ 判队空,若为空返回$true$。
**
## $4.priority\_queue
#include <queue>
priority\_queue<int>q; //定义一个q的大根堆
priority\_queue的函数:
**
$pop():$删除队头
$top():$ 返回指向队头元素的引用
$size():$ 返回队中元素个数
$empty():$ 判队空,若为空返回$true
**
5.deque
#include <deque>
deque<int> q 定义一个int型的双端队列q
双端队列的函数:
**
$pop\_front()/pop\_back()$: 从队头/队尾出队
$front()/back:$ 返回指向队头/队尾元素的引用
$size():$ 返回队中元素个数
$empty():$ 判队空,若为空返回$true
**
## $6.vector
#include <vector>
vector<int>a 定义一个动态数组vector~a
动态数组的函数:
**
size/empty
clear
begin/end
front/back
push\_back/pop)back
erase
insert
**
7.set(multiset,bitset)
#include <set>
set是有序集合,multset是有序多重集合。可翻转、进过排序的关联容器。键和值类型一致。内部时实现为红黑树。关联容器将键和值关联在一起,通过键来查找值
成员函数:
**
size()/empty()/clear()/erase()
begin()/end()
find()/insert()
$lower\_bound()/unper\_bound()$ 大于等于$x$最小的,大于$x$最小的
**
## $8.map(multimap)
#include <map>
map是一个键值对映射,multimap一个键可以与多个值关联。可翻转、进过排序的关联容器。键和值类型可以不同。内部实现为红黑树。
专用成员函数:
**
size/empty/clear/erase
begin/end
find/insert
**
9.sort
sort是一个排序函数
10.reverse(random\_shuffle,unique)