STL-容器的比较与操作
设计库的目的是为容器类型提供通用接口。如果两种容器提供相似的操作,则为它们定义的这个操作应该完全相同。例如,所有容器都有返回容器内元素个数的操作,于是所有容器都将操作命名为size,并将size返回值的类型都指定为size_type类型。类似地,算法具有一致的接口。例如,大部分算法都作用在由一对迭代器指定的元素范围上。
1.STL容器分类
顺序容器:
将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素。主要有vector、list、deque(双端队列)。
顺序容器包含顺序
容器适配器:
stack、queue
和
priority_queue
。
关联容器:支持通过键来高效地查找和读取元素。主要有:pair、set、map、multiset、multimap和bitset,hash_set,hash_map, hash_multiset, hash_multimap由于顺序容器,顺序容器适配器和关联容器在接口上存在较大的差异,因此分类进行总结。
2.容器比较
vector | deque | list | set | multiset | map | multimap | |
名称 | 向量容器 | 双向队列容器 | 列表容器 | 集合 | 多重集合 | 映射 | 多重映射 |
内部数 据结构 |
连续存储的数组形式(一端开口的组) |
连续或分段连续存储数组(两端 开口的数组) |
双向环状链表 | 红黑树(平衡检索二叉树) |