C++ STL 系列(六):STL 容器全景 —— vector / list / deque / set
·
在前几篇文章中,我们已经学习了 STL 的基础:
- STL 的整体结构
- vector
- map / unordered_map
- iterator
- algorithm
这一篇我们来从整体上看看 STL 容器体系。
STL 中提供了多种容器,每种容器都有不同的应用场景。
一、什么是 STL 容器
STL 容器本质就是 数据结构。
它们负责:
存储数据
管理数据
提供访问方式
常见容器可以分为两大类:
序列容器(Sequence Containers)
关联容器(Associative Containers)
二、序列容器
序列容器中的元素 按顺序存储。
主要包括:
| 容器 | 底层结构 |
|---|---|
| vector | 动态数组 |
| list | 双向链表 |
| deque | 双端队列 |
1 vector(最常用)
特点:
动态数组
内存连续
支持随机访问
示例:
vector<int> nums = {1,2,3};
优点:
访问速度快
缓存友好
vector 是 STL 中最常用的容器。
2 list
list 的底层是 双向链表。
特点:
插入删除效率高
不支持随机访问
示例:
list<int> nums;
nums.push_back(10);
nums.push_back(20);
缺点:
访问元素较慢
因此在实际开发中使用较少。
3 deque
deque 是 双端队列(Double Ended Queue)。
特点:
两端都可以插入和删除
示例:
deque<int> nums;
nums.push_back(1);
nums.push_front(0);
应用场景:
队列
滑动窗口
三、关联容器
关联容器用于 键值存储或集合存储。
常见容器:
| 容器 | 底层结构 |
|---|---|
| map | 红黑树 |
| set | 红黑树 |
| unordered_map | 哈希表 |
| unordered_set | 哈希表 |
1 set
set 是 集合容器。
特点:
元素唯一
自动排序
示例:
set<int> s;
s.insert(3);
s.insert(1);
s.insert(2);
遍历结果:
1 2 3
2 unordered_set
unordered_set 的底层是 哈希表。
特点:
元素唯一
不排序
查找速度快
四、STL 容器总结
可以用一张简单结构图总结:
STL Containers
│
├─ Sequence Containers
│ ├─ vector
│ ├─ list
│ └─ deque
│
└─ Associative Containers
├─ map
├─ set
├─ unordered_map
└─ unordered_set
五、最常用的 STL 容器
在实际开发中,最常使用的容器是:
vector
unordered_map
map
这三个容器已经可以解决 大部分问题。
六、容器选择建议
可以用一个简单规则判断:
需要列表 → vector
需要字典 → unordered_map
需要排序 → map / set
七、总结
STL 提供了多种容器,每种容器适用于不同场景。
最重要的几个容器:
vector
map
unordered_map
set
理解它们的特点,就可以在实际开发中正确选择容器。
下一篇
下一篇我们将介绍 STL 的设计思想:
更多推荐




所有评论(0)