C++11 STL容器学习表格清单
容器名称 | 头文件 | 核心特性 | 常用操作(示例) | 时间复杂度(常用操作) | 学习链接 |
---|---|---|---|---|---|
vector | <vector> | 动态数组,支持随机访问,尾部增删高效 | push_back() 、pop_back() 、resize() 、size() 、empty() | 尾部操作O(1),插入/删除O(n) | 优快云详解12 |
string | <string> | 动态字符串,支持子串操作和C风格字符串转换 | substr() 、c_str() 、push_back() 、size() 、clear() | 随机访问O(1),拼接O(n) | 优快云总结1 |
queue | <queue> | 先进先出(FIFO),仅允许队尾插入、队首删除 | push() 、pop() 、front() 、back() 、size() | 插入/删除O(1) | 优快云队列与堆2 |
stack | <stack> | 先进后出(LIFO),仅允许栈顶操作 | push() 、pop() 、top() 、size() | 插入/删除O(1) | 优快云栈与队列2 |
priority_queue | <queue> | 基于堆实现,默认大根堆,支持快速获取最大值 | push() 、pop() 、top() | 插入/删除O(log n) | 优快云优先队列2 |
pair | <utility> | 存储两个元素,支持嵌套和比较操作,常用于排序和组合数据 | make_pair() 、first 、second | 访问O(1) | 优快云 pair用法1 |
set | <set> | 有序不重复集合,底层红黑树实现 | insert() 、erase() 、find() 、count() | 增删查O(log n) | GitHub技巧14 |
map | <map> | 键值对映射,按键有序存储,支持高效查找 | insert() 、operator[] 、find() 、count() | 增删查O(log n) | GitHub map详解14 |
unordered_map | <unordered_map> | 哈希表实现,无序但查找高效 | insert() 、operator[] 、find() 、count() | 平均O(1),最坏O(n) | 优快云哈希表1 |
分容器学习指南
1. vector(动态数组)
-
核心用途:替代传统数组,支持动态扩容,适合需要频繁尾部操作或随机访问的场景。
-
C++11特性:使用
emplace_back()
替代push_back()
直接构造元素,减少拷贝开销1。 -
实战技巧:
-
倍增思想:减少扩容次数,提高效率(例如初始容量不足时,容量按2倍增长)1。
-
二维初始化:
vector<vector<int>> mat(10, vector<int>(8, 1))
2。
-
2. string(字符串)
-
核心用途:处理字符串操作,如拼接、子串提取。
-
关键函数:
-
substr(start, length)
:截取子串,超出长度时返回原串1。 -
c_str()
:转换为C风格字符串,兼容printf
1。
-
-
注意点:
size()
返回无符号数,直接参与运算可能导致溢出,需强制转换为int
1。
3. priority_queue(优先队列)
-
核心用途:快速获取最大值或最小值(如Dijkstra算法中的最短路径)。
-
自定义排序:通过模板参数调整堆类型:
priority_queue<int, vector<int>, greater<int>> min_heap; // 小根堆:cite[2]
4. pair(键值对)
-
嵌套使用:可存储复杂结构,如
pair<int, pair<int, int>>
表示三维坐标1。 -
排序规则:默认按
first
升序,再按second
升序,结合sort()
时无需自定义比较函数1。
5. set/map(有序集合与映射)
-
去重与排序:
set
自动去重并按升序排列,multiset
允许重复14。 -
高效查找:
find()
返回迭代器,count()
判断元素是否存在(map
中用于检查键)14。
6. unordered_map(哈希表)
-
适用场景:需要O(1)时间复杂度的查找操作,但元素无序14。
-
注意哈希冲突:极端情况下退化为O(n),需合理选择哈希函数14。
联动学习资源
-
优快云专栏:《蓝桥杯必备STL总结》
-
包含所有容器的代码示例及实战题(如离散化问题)1。
-
-
GitHub实战技巧:蓝桥杯算法笔记
-
提供
set
、map
的遍历方法及组合数生成技巧14。
-
-
知乎讨论:搜索“蓝桥杯STL高频考点”,可参考用户分享的刷题模板。