STL

· · 个人记录

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)