常见STL容器
vector
变长数组, 倍增的思想,支持比较运算,按字典序比较(4个3大于3个4)
size() //返回元素个数
empty() //返回是否为空
clear() //清空
front()/back()
push_back()/pop_back()
begin()/end() // 迭代器
pair<int, int>
对,支持比较运算
first 第一关键字
second 第二关键字
make_pair() //初始化赋值
string
字符串
substr() //求子串
c_str()
queue
队列
push()
front()
back() //返回最后一个元素
pop()
priority_queue
优先队列(堆),默认是大根堆
大根堆变小根堆,可以直接插入-x
push()
top() //返回堆顶元素
pop()
priority_queue<int, vector<int>,greater<int>> //另一种定义小根堆的方式
stack
栈
push()
top() //返回栈顶元素
pop()
deque
双端队列 (用的不多)
set, map, multiset, multimap
基于平衡二叉树(红黑树),动态维护有序序列
size()
empty()
clear()
begin()/end() //O(logn)
set/multiset
insert()
find() //查找一个数
count() //统计一个数的数量
erase()
1、输入是一个数x,删除这个数 //O(k + logn)
2、输入是一个迭代器,删除这个迭代器
lower_bound()/upper_bound()
lower_bound(x) //返回大于等于x的最小的数的迭代器
upper_bound(x) //返回大于x的最小的数的迭代器
map/multimap //存的是一个映射
insert() //插入一个pair
find() //可以像数组一样访问map O(logn)
erase()
1、输入是一个数pair
2、输入是一个迭代器,删除这个迭代器
lower_bound()/upper_bound()
lower_bound(x) //返回大于等于x的最小的数的迭代器
upper_bound(x) //返回大于x的最小的数的迭代器
unordered_set, unordered_map, unordered_multiset, unordered_multimap
哈希表
增删改查时间复杂度O(1)
不支持迭代器的++、–,lower_bound()/upper_bound()
bitset
压位
重要操作函数
sort()
从小到大对数组内的元素进行排序,时间复杂度O(logn)
对于结构体也可以进行排序,分为两种方法:
1、对要排序的元素自定义比较函数,sort时传入
2、在定义结构体内部重载小于号(大于号)
bool operator < (const Rec &t) const // 只有当此结构体内的x小于t的x时才能排到前面去
{
return x < t.x
}