在前几篇文章中,我们已经学习了 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 的设计思想:

STL 的核心理念:泛型编程(Generic Programming)

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐