Ⅰ. 算法库 (algorithm)
1、sort
1.区间:[a,b)
即sort(a,a+n) (a为数组,n为数组长度)
2.作用:
对区间按照从小到大的顺序进行排序
3.定义结构体——比较类型
struct node {
int a, b;
bool operator < (const node& m) {
if (a == m.a)
return b > m.b;
return a < m.a;
}
};
如果a相等按照b从大到小排序,反之按照a从小到大排序(以上含重载运算符知识)
即sort(a, a+n, node)(a为数组,n为长度,node为定义结构体)
2、unique (配合sort)
1.区间:[a,b)
即unique(a, a+n) (a为数组,n为长度)
2.作用:
“删除”序列中所有相邻的重复元素
3、 find
1.区间:[a,b)
即find(a, a+n, b) (a为数组,n为长度,b为查找值)
2.作用:
返回的是首个相同值的下标
4、 lower_bound(配合sort)
1.区间:[a,b)
即lower_bound(a, a+n, b)(a为数组,n为长度,b为查找值)
2.作用:
返回首个大于等于查找值的下标
5、upper_bound(配合sort)
1.区间:[a,b)
即upper_bound(a, a+n, b)(a为数组,n为长度,b为查找值)
2.作用:
返回首个大于查找值的下标
6、reverse
1.区间:[a,b)
即reverse(a, a+n) (a为数组,n为长度)
2.作用:
对区间进行翻转
Ⅱ. pair
1.格式
pair<T1,T2> p (T1、T2表示类型(int、double、string……))
2.声明
typedef pair <T1,T2> pll; 用pll直接声明pair类型结构
pll p;
Ⅲ.基础函数
1.clear()
清空容器
2.empty()
判断容器是否为空
3.size()
返回容器元素个数
4.begin()、end()
分别返回指向开头的迭代器和结尾的后一位迭代器
Ⅳ. 容器库(vector、stack、queue)
1、vector
1.初始化
一维初始化 vector<T> v(n,a)
T为类型(int、double、string……),n为初始长度,a为初始元素
二维初始化 vector<vector<T>> v(m,vector(n,a))
T为类型(int、double、string……),m为行数,n为列数,a为初始元素
2.末尾插入元素
v.push_back(a) a为插入元素
3.删除末尾元素
v.pop_back()
4.删除区间元素
erase(v.begin() + a , v.begin () +b);
提示:
1.erase适用string类型,在string库中
2.返回最后被删除的下一个元素的迭代器
2. stack
1.初始化
stack<T> v; T为类型(int、double、string…)
2.入栈
v.push(a)
3.出栈(弹出栈顶)
v.pop() (需判断是否空栈)
4.访问栈顶
v.top()
3.queue
1.初始化
queue<T> v T为类型(int、double、string…)
2.入队
v.push(a)
3.访问队头
v.front()
4.出队(弹出队头)
v.pop() (需判断是否空栈)
4.dequeue(双向队列)(可用下标访问)
1.格式
dequeue <T> v T为类型(int、double、string…)
2.插入
push_back() 队头放入元素
push_front() 队尾放入元素
3.删除
pop_back() 删除队头元素
pop_front() 删除队尾元素
5.piority_queue (优先队列)
1.格式
priority_queue <T> v(默认元素大的优先出队) T为类型(int、double、string…)
priority_queue<T, vector<T>, greater> v 优先元素小的先出队
2.出队
v.pop()
3.入队
v.push(a)
4.访问队头
v.top()
6.set
1.初始化
set<T> v T为类型(int、double、string…)
默认从小到大排序
2. 插入元素
v.insert(a) (不会重复插入元素)
3.遍历set
set<T > ::interator it
for(it=v.begin();it!=v.end();it++)
……
4.删除元素
v.erase(a)
5.查找个数
v.count(a)
6.查找位置(返回迭代器)
v.find(a)
二分:
low_bound(a) 返回首个不小于查找值的下标
upper_bound(a) 返回首个大于查找值的下标
同样结合 set<T> ::iterator it 进行使用
7.map
1.格式
map<T,int> v;