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
相关推荐
黑马程序员毕设15 分钟前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
SL_staff17 分钟前
从文档工具到知识中枢:基于JVS数字底座构建企业级统一内容管理平台的技术实践
java·开源·全栈
SL_staff20 分钟前
从‘连得上’到‘管得好’:JVS-IOT双引擎驱动设备运维闭环
java·物联网·产品
Fuyo_11192 小时前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
w_zero_one3 小时前
递归算法(一)
java·开发语言·算法
SL_staff3 小时前
私有化低代码不是减配版开发:JVS双模式建模如何重建IT交付信任
java·低代码·spring cloud
墨着染霜华4 小时前
Redocly 生成 OpenAPI 接口文档踩坑实录|Node 版本兼容 + 接口地址错误问题解决
java
文丑颜不良啊4 小时前
LeetCode1881~1990题目解析
java·leetcode
Chen_harmony4 小时前
七、STL与string类
开发语言·c++
xxxiugou1234 小时前
C++命名空间与引用全解析
开发语言·c++