标准库
栈 stack
- push() 压入栈
- pop() 弹出首元素
- top() 返回首元素
队列 queue
- push() 压入队列
- pop() 弹出队列头元素
- front() 获取队列头元素,注意这里不是top
堆 priority_queue
- 默认最大堆
- 最小堆 priority_queue<int, vector, greater>
- 找第k大元素:转换思路,维护k个元素的最小堆,堆底为最大,堆顶为第k大
字符串 string
- substr(起始下标, 子串长度) 获取子串
- insert(插入位置下标,字符串) 在该位置前插入字符串
- append() 拼接字符串
- append(个数,内容) 拼接多个字符串
- 重载+ 拼接字符/字符串
- stoi()/stod() 字符串转整型/浮点型
- to_string() 整型/浮点型转字符串
字符 char
- 字符转整型 int(字符 - ‘0’)
- 整型转字符 char(整型 + ‘0’)
容器 vector
- 初始化 vector new_vector(5, 0) 5个元素均为0
- 也可以直接用另一个vector变量的迭代器初始化,注意右区间迭代器是末端位置的下一个位置
- pop_back() 弹出最末尾元素
- insert(iterator loc, const TYPE &val) 插入,也可以用迭代器插入另一个vector变量的一个区间
映射 map
- 三种:map, multimap, unordered_map,前两者的实现为红黑树,unordered_set的底层实现是哈希表
- 键:.first,值:.second
- 插入元素:insert/直接通过[]
- 查找键值:find(),若不存在则返回.end(),否则返回指向该映射的迭代器
- 删除映射:erase,参数可以是键/迭代器
- 计数:count
集合 set
- 三种:set, multiset, unordered_set
- find() 查找,同map
- count() 计数
- set和multiset有序,和map与multimap一样都默认为升序排列,如默认为set<int, less< int>> 为升序,可以设置降序为set<int, greater< int>>
- 自定义排序方式(降序排列):
set<int, cmp> my_set; struct cmp { bool operator() (int& a, int& b) {return a > b; } }
排序 sort
- sort(.begin(), .end()) 快速排序,默认升序
- sort(.begin(), .end(), [] (int a, int b) {return a > b;}) 自定义排序方式,降序
Tips
- INT32_MAX