STL
Vector
定义:vector
向数组的最后插入新元素 v.push_back(x);
向数组的最后删除一个元素 v.pop_back(x);
获取数组长度 v.size();
清空数组 v.clear();
返回指向开头元素的指针 v.begin();
返回指向末尾的下一个元素的指针 v.end();
建立一个二维数组 vector
Set&multiset多重集合
优点:
自己会从小到大排好序
set 去重 multiset不去重
定义一个set
插入新元素 s.insert(x);
删除元素 s.erase(x);
查询元素x是否存在 s.find(x);
如果不存在 返回 s.end()
清空集合 s.clear();
返回指向开头元素的指针 s.begin();
返回指向末尾的下一个元素的指针 s.end();
迭代器 set
Map
优点:
由{键、值}对组成的集合,以某种比较键大小关系的谓词进行排列。
DIY能力强。
定义 map<type1,type2>mp;
以type2排列。
使用起来和数组差不多。
清空映射关系 mp.clear();
Stack 栈
定义 stack
压入 st.push(x);
弹出 st.pop();
查询栈顶的元素 st.top();
查询栈是否为空 st.empty();
Queue 队列
定义 queue
返回队头元素 q.front();
返回队尾元素 q.back();
向队尾压入 q.push(x);
队头弹出队头元素 q.pop();
判断队伍是否为空 q.empty();
Priortty_queue 优先队列
定义 priority_queue
查询队头元素q.top();
向队列中加入一个元素 q.push(x);
从队头弹出队头 q.pop();
查询队列是否为空 q.empty();
优先队列如何按从小到大排序?
priority_queue<int,vector
Next_permutation全排列
next_permutation(a,last:a+n);
Lower_bound
二分查找
lower_bound()返回值是一个迭代器,返回指向大于等于key的第一个值的位置
lower_bound(a.begin(),a.end(),x);