序列容器
底层均为连续/链式存储,支持按位置访问。
| 容器 | 底层结构 | 文件 |
|---|---|---|
| vector | 动态数组(连续内存) | vector |
| array | 定长数组(栈上固定大小) | array |
| deque | 分段连续缓冲区 | deque |
| list | 双向链表 | list |
| forward_list | 单向链表 | list |
| string | 动态字符数组(SSO) | string |
关联容器
底层为红黑树,元素按 key 自动排序,支持范围查询。
无序容器
底层为哈希表,平均 O(1) 操作,元素无序。
| 容器 | 说明 | 文件 |
|---|---|---|
| unordered_set | 哈希唯一集合 | unordered_set |
| unordered_multiset | 哈希可重复集合 | unordered_set |
| unordered_map | 哈希唯一键值对 | unordered_map |
| unordered_multimap | 哈希可重复键值对 | unordered_map |
适配器
对底层容器的封装,改变访问方式。
| 容器 | 语义 | 底层默认 | 文件 |
|---|---|---|---|
| stack | LIFO(后进先出) | deque | stack |
| queue | FIFO(先进先出) | deque | queue |
| priority_queue | 堆(最大/最小优先) | vector | priority_queue |
其他
容器选择速查
| 需求 | 推荐容器 |
|---|---|
| 随机访问 + 尾部增删 | vector |
| 固定大小数组 | array |
| 头尾快速增删 + 随机访问 | deque |
| 频繁中间插入/删除 | list |
| 字符串处理 | string |
| 有序 + 去重 | set |
| 有序键值对 | map |
| 快速判重/查找 | unordered_set |
| 快速键值查找 | unordered_map |
| LIFO | stack |
| FIFO / BFS | queue |
| 动态取最值 | priority_queue |
| 状态压缩 / 位运算 | bitset |
相关数据结构
| 概念 | 链接 |
|---|---|
| 动态数组 | A_容器_Container |
| 栈 | B_栈_Stack |
| 堆 | C_堆_Heap |
| 链表 | D_链表_LinkedList |
| 队列 | F_队列_Queue |
| 哈希表 | G_哈希表_HashTable |
| 树(BST/AVL/红黑树) | I_树_Tree_BST_AVL |