vector
定义:
vector<int> a;
vector<int> a(10);
vector<int> a(10,3);
vector<int> a[N];
函数:
a.size();
a.empty();
a.clear();
a.front();
a.back();
push_back()/pop_back();
迭代器:begin()/end();
支持比较运算:按字典序比较
vector<int> a(4,3),b(3,4);
a<b
pair
存储二元组
pair<int,string> p;
p.first
p.second
支持比较运算,排序,以first为第一关键字,second为第二关键字
初始化:
p=make_pair(10,"xyz");
p={10,"xyz"};
pair<int,pair<int,int>>p
string
string a="xyz";
a+="def";
a.size();
a.length();
a.empty();
a.substr(1,2);
a.c_str();
queue
queue<int>a;
a.size();
a.empty();
a.push(x);
a.front();
a.back();
a.pop();
无clear函数
不支持迭代器
priority_queue(堆)
默认大根堆
priority_queue <int,vector<int>,less<int> >q;
priority_queue<int,vector<int>,greater<int>>a;
a.size();
a.empty();
a.push(x);
a.top();
a.pop();
无clear函数
stack
a.size();
a.empty();
a.push(x);
a.top();
a.pop();
无clear函数
不支持迭代器
deque(双端队列)
deque<int>a;
a.size();
a.empty();
a.clear();
a.front();
a.back();
a.push_back()/a.pop_back
a.push_front()/a.pop_front()
随机访问支持迭代器:a.begin()/a.end();
set/multiset
基于红黑树,动态维护有序序列
multiset可有重复元素
set<int>s;
multiset<int>ms;
insert();
find();
count();
erase()
(1)输入是一个数x,删除所有x
(2)输入是一个迭代器,删除这个迭代器
核心操作:
lower_bound()/upper_bound()
随机访问支持迭代器:a.begin()/a.end();
map/multimap
基于红黑树,动态维护有序序列
insert();
erase();
map<string,int>mp
lower_bound()/upper_bound()
随机访问支持迭代器:a.begin()/a.end();
unordered_set,unordered_map,unordered_multimap,unordered_multiset基于hash无序
bitset
压位,每个字节存八位,bool数组的1/8
例如:开10000*10000的bool矩阵
bool 存的话需要10^8B
bitset 存需要(10^8)/8B
bitset<10000> s;
支持位运算操作
~,&,|,^
>>,<<
将s看作某个数支持==,!=
s[n]返回某一位是0/1
count();
any/none();
set()
set(k,v)
reset()
size()