常用STL及其函数
vector
动态数组,倍增思想
size() 返回元素个数
empty() 返回是否为空
clear() 清空
front() / back()
push_back() / pop_back()
begin() / end()
[]
支持比较运算 (字典序)
pair
存储二元组
first 第一个元素
second 第二个元素
支持比较运算 (以first为第一关键字,second为第二关键字)
初始化make_pair(<T>,<T>) c++11{T,T}
string
c_str()返回string字符数组对应的头指针,find() O(logn)
size() / length() 返回长度
empty()
clear()
substr(起始位置,长度)返回子串
queue,
push() 队尾插入
front() 返回队头
back() 返回队尾
pop() 弹出队头元素 //先进先出
无clear
priority_queue堆 默认大根堆
插入-x可以变成小根堆
定义成小根堆:priority_queue<int,vector<int>,greater<int>> 小根堆
stack
栈 push() , top() , pop()
deque
双端队列
push_front() / pop_front()
[]
set , multiset
基于平衡二叉树(红黑树)实现,动态维护有序序列
insert()插入一个数
size()
empty()
find() 查找一个数
count() 返回某一个数的个数
erase() 输入是一个数,则删除所有这个数 O( k + logn ) k 为个数
输入是一个迭代器,则删除这个迭代器
lower_bound() 返回大于等于x的最小的数的迭代器
upper_bound() 返回大于x的最小的数的迭代器 //不存在则返回end()
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
压位
支持位运算
[]
count()
any() 判断是否至少有一个1
none() 判断是否全
set() 把所有位置为1
set(k,v) 将第k位变成v
reset() 把所有位变成0
flip() 把所有位~
flip(k) 把第k位~