vector,边长数组,倍增的思想
string,字符串,substr(), c_str()
queue,队列,push(), front(), pop()
priority_queue,优先队列, push(), top(), pop()
stack,栈,push(), top(), pop()
deque,双端队列
set, map, multiset, multimap,基于平衡二叉树(红黑树),动态维护有序序列
unordered_set, unordered_map, unordered_multiset, unordered_multimap,哈希表
bitset,压位
1.vector
vector[HTML_REMOVED] a;
vector[HTML_REMOVED] a(10); 长度为10
vector[HTML_REMOVED] a(10, 3); 长度为10,每个都是3
vector[HTML_REMOVED] a[10]; 10个vector
size() 返回元素的个数
empty() 返回是否为空,是空返回true
clear() 清空中元素
front() 返回的第一个元素
back() 返回最后一个元素
push_back 最后插入一个元素
pop_back 删除最后一个元素
begin() 头指针
end() 尾指针
vector 支持比较运算,按字典序
pair[HTML_REMOVED] p;
first 第一个元素
second 第二个元素
支持比较运算,以frist为第一关键字, 以second为第二关键字
p = make_pair(20, 20);
p = {20, 20};
2.string
size()/length() 返回字符串长度
empty()
clear()
substr(1, 2) 从1到2返回元素 substr(1) 返回1到最后元素
c_str() 返回起始地址
3.queue
size()
empty()
push() 向队尾插入一个元素
front() 返回队头元素
back() 返回队尾元素
pop() 弹出队头元素
4.priority_queue(默认大根堆)
push() 插入一个元素
top() 返回堆顶元素
pop() 弹出堆顶元素
插入一个负数可以变成小根堆 或者 priority_queue[HTML_REMOVED], greater[HTML_REMOVED]> heap;
5.stack
size()
empty()
push() 向栈顶插入一个元素
top() 返回栈顶元素
pop() 弹出栈顶元素
6.deque(强化版的栈,但效率很低)
size()
empty()
clear()
front()
back()
push_back()
pop_back()
push_front()
pop_front()
begin()
end()
7.set/multiset
size()
empty()
clear()
begin() , –
end() , –
insert() 插入一个数
find() 查找一个数,如果不存在,返回end迭代器
count() 返回某一个数的个数
erase() ①输入时一个数x,删除所有x O(k + logn)
②输入一个迭代器,删除这个迭代器
lower_bound(x)返回大于等于x的最小的数的迭代器
upper_bound(x)返回大于x的最小的数的迭代器
8.map/multimap
size()
empty()
clear()
begin() , –
end() , –
insert() 插入的数是一个pair
erase() 输入的参数是pair或迭代器
find()
lower_bound()
upper_bound()
9.unordered_set, unordered_map, unordered_multiset, unordered_multimap
和上面类似, 增删改查的时间复杂度是O(1)
但不支持 lower_bound()/upper_bound(), unordered_set, unordered_map支持迭代器的++, 四个都不支持–
10.bitset
bitset<10000> s;
~, &, |, ^
, <<
==, !=
count() 返回有多少个1
any() 判断是否至少有一个1
none() 判断是否全为0
set() 把所有位置变成1
set(k, v) 将第k位变成v
reset() 把所有位变成0
flip() 等价于~
flip(k) 把第k位取反