STL
#include
vector
vector 变长数组,倍增思想
size()
empty()
clear()
front()/back()
push_back()/pop_back()
begin()/end()
[]
支持比较运算,按字典序
pair<int, int>
first 第一个元素
second 第二个元素
支持比较运算,以first为第一关键字,second第二关键字(字典序)
#include
string 字符串
substr(起始下标, 长度) 返回子串
size()/length() 返回字符串长度
c_str() 返回字符串的首地址
empty()
clear()
to_string(x)
#include
queue 队列
size()
empty()
push() 向队尾插入一个
front() 返回队头
back() 返回队尾
pop() 弹出队头
#include
priority_queue 优先队列(堆)默认大根堆
push() 插入一个元素
top() 返回堆顶
pop() 弹出堆顶
定义成小根堆方式:
priority_queue<int , vector<int>,greater<int>> heap;//创建小根堆
priority_queue<int> heap
heap.push(-x)//创建小根堆
#include
stack 栈
size() 栈的大小/长度
empty() 是否为空
push() 向栈顶插入一个元素
top() 返回栈顶元素
pop() 弹出栈顶元素
#include
deque 双端队列,队头队尾都可以插入删除
size()
empty()
clear()
front()
back()
push_back()/pop_back()
push_front()/pop_front()
begin()/end()
[]
很少用,速度太慢了
set,map,multiset,multimap 基于平衡二叉树(红黑树),动态维护有序序列
size()
empty()
clear()
begin()/end() ++ -- 返回前驱后继 O(logn)
set/multiset
insert() 插入一个数
find() 查找一个数
count() 返回某个数的个数
erase()
输入是一个数x,删除所有x O(k+log n)
输入一个迭代器,删除这个迭代器
lower_bound()/upper_bound()
lower_bound(x) 返回大于等于x的最小的数
upper_bound(x) 返回大于x的最小的数
map/multimap
insert() 插入的数是一个pair
erase() 输入的参数是pair或者迭代器
find()
[] 像数组一样使用 O(logn)
lower_bound()/upper_bound()
unordered_set,unordered_map,unordered_multiset,unordered_multimap,哈希表
和上面类似,增删改查的时间复杂度是O(1)
不支持lower_bound()/upper_bound() 因为内部是无序的
不支持迭代器的++ --
bitset,压位
用于存储bool量
bitset<10000> S;
~s,&,|,^
>>,<<
==,!=
[]
count() 返回有多少个1
any() 判断是否至少有一个1
none() 判断全为0
set() 把所有位置变为1
set(k,v) 将第K位变成V
reset() 把所有位变为0
flip() 等价于~
flip() 把第K位取反
1 |
|
1 |
|