vector
//size 和 empty 是所有STL容器都有的函数
size() //返回元素个数
empty() //返回是否为空
clear() //清空
front() back() //返回第一个数、最后一个数
push_back() pop_back() //向最后插入一个数、把最后一个数删掉
begin() end() //迭代器,vector的第0个数a[0]、最后一个数的后面那个数a[a.size()]
pair
可以存储一个二元组,默认排序方式按first来排序
- pair可以看成帮我们实现了一个二元变量的结构体,而且实现了一个比较函数cmp
pair<int,string> p; //任意两个类型的变量都可以组合
p.first p.second //第一、二个元素
p = {20,"abc"}; //pair的初始化方式
string
也有size、empty、clear
string里length和size的作用一样
substr(a,b); //可以获取子串,第一个参数是初始下标,第二个参数是长度,可以省略
queue
push(); //向队尾插入一个元素
front(); //返回队头元素
back(); //返回队尾元素
pop(); // 弹出队头元素
也有size、empty,没有clear函数
优先队列(堆) priority_queue
默认大根堆
push(); //插入一个元素
top(); //返回堆顶元素
pop(); //弹出堆顶元素
如果要小根堆:
法1:插入数时均插入他的负数。 push(-x)
法2:直接定义小根堆: priority_queue<int, vector<int>, greater<int>> h;
stack栈
push(); //向栈顶插入一个元素
top(); //返回栈顶元素
pop(); //弹出栈顶元素
deque双端队列(加强版vector)
效率低,不常用
有clear();
front(); back();
push_back(); pop_back();
push_front(); pop_front(); //比vector强的地方
set
#include <set>
set<int> S; //不能有重复元素
multiset<int> S; //可以有重复元素
支持size、empty、clear
insert(); //插入一个数
find(); //查找一个数,不存在的话就返回end()迭代器
count(); //返回某一个数的个数,(set里最多是1)
erase(); //参数是一个数的话,就删除所有x。参数是一个迭代器,则删除这个迭代器
lower_bound(); //返回大于等于x的最小的数的迭代器
upper_bound(); //返回大于x的最小的数的迭代器
map(存的是一个映射,把a映射到b)
map/multimap
insert() //插入的是两个数,映射
erase() //输入pair或迭代器
find();
map<string, int> a;
a["yxc"] = 1; //初始化
cout<<a["yxc"]<<endl;
unordered_set、unordered_map、unordered_multiset……
和上面都是类似的
因为无序,所以不支持lower_bound、upper……