vector
- 变长数组,倍增的思想
- 初始化:
vector<int>a(10,3)
:长度为10的数组,且值均为3
vector<int> a[10]
;十个vector数组 - size()返回元素个数
- empty()返回是否为空
- clear()清空
- front()返回第一个数
- back()返回最后一个数
- push_back()在最后插入一个数
- pop_back()删除最后一个数
- 迭代器:begin()/end()
- 支持比较运算
vector<int>a;
for(int i=0;i<10;i++) a.push_back(i);
for(int i=0;i<a.size();i++)cout<<a[i]
for(vector<int>::iterator i=a.begin();i=a.end();i++)
cout<<a[i];
for(auto x:a)cout<<x;
pair
pair<int ,int>
- first,第一个元素
- second,第二个元素
- 支持比较运算,以first为第一个关键字,以second为第二个关键字
- 用途:某件商品的两种属性,按照某种属性进行排序,将要排序的关键字放在first上
- 三种属性
pair<int pair<int,int>> p
string
- substr (起始位置,截取字符串长度)
- 当长度很长时,则到字符串末尾截止
- size();
- empty();
- clear();
queue,队列
- size()
- empty()
- push()向队尾插入一个元素
- front()返回队头元素
- back()返回队尾元素
- pop()弹出队头元素
- 没有clear()函数
清空queue队列的方法:queue<int>()q; q=queue<int>();
priority_queue,优先队列(默认是大根堆) - push() 插入一个元素
- top()返回堆顶元素
- pop()弹出堆顶元素
- 小根堆定义方法:插入该数的相反数(负数)
priority_queue<int>heap; heap.push(-x);
stack,栈
- size()
- empty()
- push() 向栈顶插入一个元素
- top() 返回栈顶元素
- pop() 弹出栈顶元素
deque,双端队列(效率低)
- size()
- empty()
- clear()
- front() 返回队头
- back() 返回队尾
- push_back() 队尾插入
- pop_back()弹出队尾
- push_front()队头插入
- pop_front()弹出队头
- 迭代器:begin(),end()
set:无重复元素的集合
multiset:可以有重复元素的集合
- insert()插入一个数(默认从小到大插入)
- find()查找一个数
- count()返回某一个数的个数
- erase()
(1)输入一个x,删除所有x,时间复杂度:o(k+logn)
(2)输入一个迭代器,删除这个迭代器 - lower_bound(x) 返回大于等于x的最小的数的迭代器
- upper_bound(x)返回大于x的最小的数的迭代器
- 正向迭代器:
set<int>::iterator it; for(it=s.begin();it!=s.end;it++)
反向迭代器:set<int>::reverse_iterator it; for(rit=s.rbegin();rit!=s.rend();rit++)
map/multimap
insert()插入的数是一个pair
erase()输入的参数是pair或者迭代器
find()
lower_bound()/upper_bound()
时间复杂度 o(logn)
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<string ,int>a;
a["yxc"]=1;
cout<<a["yxc"]<<endl;
return 0;
return 0;
}
unordered_set,unordered_map,unordered_multiset,unordered_multimap,哈希表
(和上面类似,好处:正删改查的时间复杂度是o(1))
不支持 lower_bound()/upper_bound()
bitset,压位
bitset<10000>s;
~,&,|,^
>>,<<
==,!=,
[]
count() 返回有多少个1
any() 判断是否至少有一个1
none()判断是否全为0
set()把所有位置成1
set(k,v) 将第k位变成v
reset() 把所有位变成零
flip() 等价于~
flip(k)把第k位取反