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
相关推荐
北冥you鱼1 小时前
深入解析 Go 中 sync.YAML.Unmarshal:如何将 YAML 数据填充到 Config 结构体
开发语言·算法·golang
wwwzhouzy1 小时前
SpringBoot 响应式编程
java·spring boot·后端·响应式编程
lingran__1 小时前
C++ STL map 与 set 底层剖析与模拟实现万字详解|基于红黑树,复刻 SGI-STL 泛型复用架构
开发语言·c++·stl·set·map·泛型编程·sgi-stl
Bonnie_12151 小时前
10-深入理解ConcurrentHashMap(JDK1.8)
java·开发语言
莫得感情 o1 小时前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
evans在进步2 小时前
LeetCode 74:搜索二维矩阵——Java 虚拟一维数组与二分查找详解
java·leetcode·矩阵
andongni2032 小时前
Spring Boot基础应用开发与部署
java·spring boot·后端
lupai2 小时前
增值税发票 OCR 识别 API 新手接入指南
java·前端·ocr
TELL5212 小时前
Sonar质量门禁
java