容器的结构与分类:
首先介绍一下顺序容器:
Array 是数组,确定了开始位置和结束位置,同时不能超出它的内存。
Vector 确定了开始位置,但可以一直向后添加新的空间去存放元素。
Deque 开始位置能够扩充并且结束位置也能够扩充
List 双向链表,相比于Forward-List占用的内存更大,因为一个元素对应两个指针。
Forward-List 单向列表,看下面的小图可知开始位置是确定的。
关联容器:(一般用于查找)
Set 中key和value是一样的,通过红黑树来编写。
Map 中有两个格子,一个用来存放key一个用来存放value。
值得注意的是,multi-代表key的值可以相同,而不添加multi前缀代表,每个元素的key是独一无二的。
无顺序容器:
无顺序容器实际是由哈希表组成,哈希表见下图
即每一个竖直的蓝色小框框都代表一个链表,可以连接许多元素。但是每个蓝色小框中的链表不能太长,太长不方便查找。
侯捷老师最后给出一张所有容器的关系图,如下图所示: