C++ 容器
C++ 容器(Container)是指一种数据结构,用于存储和管理一组元素。容器提供了一种方便的方式来存储和访问数据,支持各种算法和迭代器。
容器类
C++ 标准库提供了许多预定义的容器类,包括:
- 顺序容器(Sequence Container):元素按照特定的顺序存储和访问。
vector
:动态数组。list
:双向链表。deque
:双端队列。
- 关联容器(Associative Container):元素通过键值对存储和访问。
map
:有序映射表。multimap
:有序多重映射表。set
:有序集合。multiset
:有序多重集合。
- 无序容器(Unordered Container):元素存储和访问顺序不确定。
unordered_map
:无序映射表。unordered_multimap
:无序多重映射表。unordered_set
:无序集合。unordered_multiset
:无序多重集合。
常用操作
insert
:插入元素。erase
:删除元素。size
:获取容器大小。empty
:检查容器是否为空。begin
:获取容器的开始迭代器。end
:获取容器的结束迭代器。operator[]
:访问容器元素(仅适用于顺序容器和关联容器)。
容器优点
- 提供了方便的数据存储和管理方式。
- 支持各种算法和迭代器。
- 可以自定义容器以满足特定的需求。
容器缺点
- 可能存在性能开销。
- 需要了解不同容器的特性和用途。
容器 | 概念 | 分类 | 优点 | 缺点 | 使用场景 |
---|---|---|---|---|---|
Vector | 动态数组 | 顺序容器 | 快速随机访问, 内存连续 | 插入删除慢, 内存浪费 | 动态数组存储, 需要快速随机访问的数据 |
List | 双向链表 | 顺序容器 | 快速插入删除, 内存动态分配 | 随机访问慢, 内存碎片 | 频繁插入删除的数据, 需要动态内存分配 |
Deque | 双端队列 | 顺序容器 | 快速插入删除, 内存动态分配 | 随机访问慢, 内存碎片 | 双端队列存储, 需要动态内存分配 |
Map | 有序映射表 | 关联容器 | 快速查找, 有序数据 | 插入删除慢, 内存浪费 | 键值对数据存储, 需要快速查找和有序数据 |
Multimap | 有序多重映射表 | 关联容器 | 快速查找, 有序数据 | 插入删除慢, 内存浪费 | 多重键值对数据存储, 需要快速查找和有序数据 |
Set | 有序集合 | 关联容器 | 快速查找, 有序数据 | 插入删除慢, 内存浪费 | 唯一元素集合存储, 需要快速查找和有序数据 |
Multiset | 有序多重集合 | 关联容器 | 快速查找, 有序数据 | 插入删除慢, 内存浪费 | 多重元素集合存储, 需要快速查找和有序数据 |
Unordered Map | 无序映射表 | 无序容器 | 快速查找, 内存动态分配 | 插入删除慢, 内存碎片 | 无序键值对数据存储, 需要快速查找和动态内存分配 |
Unordered Multimap | 无序多重映射表 | 无序容器 | 快速查找, 内存动态分配 | 插入删除慢, 内存碎片 | 无序多重键值对数据存储, 需要快速查找和动态内存分配 |
Unordered Set | 无序集合 | 无序容器 | 快速查找, 内存动态分配 | 插入删除慢, 内存碎片 | 无序元素集合存储, 需要快速查找和动态内存分配 |
Unordered Multiset | 无序多重集合 | 无序容器 | 快速查找, 内存动态分配 | 插入删除慢, 内存碎片 | 无序多重元素集合存储, 需要快速查找和动态内存分配 |