适合编程算法竞赛的 C++ STL 容器清单
1. 向量 (vector)
- 构造:
vector<类型> arr(长度, [初值]); - 尾接:
.push_back(元素); - 尾删:
.pop_back(); - 访问:
arr[下标]; - 获取长度:
.size(); - 清空:
.clear(); - 判空:
.empty(); - 改变长度:
.resize(新长度, [默认值]); - 取尾部元素:
.back(); - 头迭代器:
.begin(); - 尾迭代器:
.end(); - 反向头迭代器:
.rbegin(); - 反向尾迭代器:
.rend();
2. 栈 (stack)
- 构造:
stack<类型> stk; - 进栈:
.push(元素); - 出栈:
.pop(); - 取栈顶:
.top(); - 查看大小:
.size(); - 判空:
.empty();
3. 队列 (queue)
- 构造:
queue<类型> que; - 进队:
.push(元素); - 出队:
.pop(); - 取队首:
.front(); - 取队尾:
.back(); - 查看大小:
.size(); - 判空:
.empty();
4. 优先队列 (priority_queue)
- 构造:
priority_queue<类型, 容器, 比较器> pque; - 进堆:
.push(元素); - 出堆:
.pop(); - 取堆顶:
.top(); - 查看大小:
.size(); - 判空:
.empty();
5. 集合 (set / multiset)
- 构造:
set<类型, 比较器> st; - 插入:
.insert(元素); - 删除:
.erase(元素); - 查找:
.find(元素); - 判断是否存在:
.count(元素); - 查看大小:
.size(); - 清空:
.clear(); - 判空:
.empty(); - 迭代器访问:
.begin();/.end();
6. 映射 (map)
- 构造:
map<键类型, 值类型, 比较器> mp; - 增/改/查:
mp[键] = 值; - 查找:
.find(键); - 删除:
.erase(键); - 判断是否存在:
.count(键); - 查看大小:
.size(); - 清空:
.clear(); - 判空:
.empty(); - 迭代器访问:
.begin();/.end();
7. 字符串 (string)
- 构造:
string(长度, 初值); - C风格转换:
.c_str(); - 访问/修改字符:
s[下标]; - 判同:
==; - 连接:
+; - 尾接:
+=; - 取子串:
.substr(起始下标, 子串长度); - 查找:
.find(字符串, 起始下标); - 数值转字符串:
to_string(变量); - 字符串转数值:
stoi();/stoll();/stof();/stod();/stold();
8. 二元组 (pair)
- 构造:
pair<类型1, 类型2> pr; - 赋值:
pr = {值1, 值2}; - 取第一值:
pr.first; - 取第二值:
pr.second; - 判同:
==;
笔记整理自blibili 算法竞赛常用STL