C++ STL 常用容器的速查表

下面是一份 C++ STL 常用容器的速查表,覆盖刷题中最常用的操作:


vector(动态数组)

cpp 复制代码
#include <vector>
vector<int> v;
操作 代码 说明
尾部插入 v.push_back(x) O(1) 均摊
尾部删除 v.pop_back() O(1)
获取长度 v.size() O(1)
判空 v.empty() 返回 bool
下标访问 v[i] O(1)
访问首/尾 v.front() / v.back()
清空 v.clear()
排序 sort(v.begin(), v.end()) 升序
降序排序 sort(v.begin(), v.end(), greater<int>())
遍历 for (int x : v)

set(集合,自动去重+升序)

cpp 复制代码
#include <set>
set<int> s;
操作 代码 说明
插入 s.insert(x) O(log n)
删除 s.erase(x) 按值删除
查找 s.count(x) 返回 0 或 1
查找 s.find(x) 返回迭代器,找不到返回 s.end()
获取长度 s.size()
判空 s.empty()
最小元素 *s.begin()
最大元素 *s.rbegin()
遍历 for (int x : s) 自动升序
降序定义 set<int, greater<int>> s; 插入后自动降序

map(键值对,按键升序)

cpp 复制代码
#include <map>
map<string, int> m;
操作 代码 说明
插入/修改 m["key"] = 1 键不存在会自动创建
查找 m.count("key") 返回 0 或 1
查找 m.find("key") 返回迭代器
删除 m.erase("key")
获取长度 m.size()
遍历 for (auto p : m) p.first 是键,p.second 是值

queue(队列,先进先出)

cpp 复制代码
#include <queue>
queue<int> q;
操作 代码 说明
入队 q.push(x) 从队尾加入
出队 q.pop() 从队头弹出
队头元素 q.front()
获取长度 q.size()
判空 q.empty()

stack(栈,后进先出)

cpp 复制代码
#include <stack>
stack<int> st;
操作 代码 说明
入栈 st.push(x) 从栈顶压入
出栈 st.pop() 弹出栈顶
栈顶元素 st.top()
获取长度 st.size()
判空 st.empty()

priority_queue(优先队列/堆)

cpp 复制代码
#include <queue>
priority_queue<int> pq; // 默认大顶堆
操作 代码 说明
入堆 pq.push(x) O(log n)
出堆 pq.pop() 弹出堆顶
堆顶元素 pq.top() 最大值(大顶堆)
判空 pq.empty()
小顶堆定义 priority_queue<int, vector<int>, greater<int>> pq; 堆顶为最小值

常用算法函数

cpp 复制代码
#include <algorithm>
功能 代码
排序 sort(v.begin(), v.end())
反转 reverse(v.begin(), v.end())
查找最小值 *min_element(v.begin(), v.end())
查找最大值 *max_element(v.begin(), v.end())
二分查找 binary_search(v.begin(), v.end(), x)
去重(需先排序) v.erase(unique(v.begin(), v.end()), v.end())
交换 swap(a, b)
填充 fill(v.begin(), v.end(), 0)

刷题选择指南

需求 选哪个
需要按下标随机访问 vector
需要自动去重+排序 set
需要键值对映射 map
先进先出(BFS) queue
后进先出(DFS/括号匹配) stack
每次取最大/最小值 priority_queue
相关推荐
淡海水10 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan10 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
Tisfy11 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
乐迪信息12 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
zww894911112 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设14 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳14 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
心抵鹊14 小时前
归并排序之翻转对(hard)
数据结构·算法
白山编程大哥14 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
_Twink1e14 小时前
openJiuwen 实训营 Day 1 · WorkSwarm 入门教程
开发语言·c++·openjiuwen