1.序列式容器
序列式容器在
STL
中主要包含常见的三种:向量
vector、链表list和双端队列deque
。
1.1 向量
vector
为一种顺序存储同类型元素的数据结构。
它是一种数组方式的思路实现
,并且可以随机访问的序列。
1.2 链表
list
是一种实现双向链表数据结构的容器。它只支持顺序访问序列中的元素。该容器在删除、插入相应元素时,效率较高。另外,
list
可以与
vector
一样在需要时动态改变其大小。
1.3 双端队列
deque
是类似向量的一种队列结构。它允许在该队列的头部和尾部插入并且删除相应的元素。同时,它也支持针对其元素的顺序以及随机访问。
2.关联式容器
关联式容器则是采用了
key-value
键值
的方式存储和访问容器中的元素。关联式容器采用树结构组织数据,支持快速、随机并且高效的检索其中的元素。关联式容器主要包含
set、multiset、map以及multimap
容器。
2.1
set
容器支持随机存取,并且其键与对应的数据元素为同一个值。该容器中所有的元素必须是唯一的,不能包含重复的元素。
2.2
multiset
容器则在
set
基础上可以包含重复的元素。同样,该容器的键与对应的元素也是为同一值。
2.3
map
是一个包含键值对的容器。该结构中存放的键为索引使用的关键字,而对应的值则为真正存放的数据。该容器允许存在重复的键值,但每个键只能与一个值相互对应。
2.4
multimap
提供单个关键词可以对应多个数据的数据结构操作,供实际应用中选择使用。
顺序式容器与关联式容器在底层实现,通过不同的数据结构类型来区分。针对提供的不同的操作接口,用户并不需要了解具体容器底层实现,可以直接通过对外公布的接口访问对应的数据元素。而容器的设计实现则是主要基于数组、链表以及二叉树基本数据结构原型的底层实现。开发者通常只需要了解容器的基本功能以及应用场合,就能够在实际应用中选择合适的容器来处理相应的数据。