1. vector(向量)
STL中标准而安全的数组,只可以在vector的“前面”增加数据。
2. deque(双端队列double-ended queue)
在功能上与vector相类似,但是可以从前后端向其中添加数据
3. list(列表)
list数据结构是双向链表
游标以此只可以移动一步。如果对链表链表已经很熟悉,那么STL中的list其实就是一个双向链表(每个节点有指向前驱和指向后继的两个指针)。
4. set(集合)
set数据结构是二叉树(红黑树)
包含了进过排序了的数据,这些数据的值(value)必须是唯一的。
5. map(映射)
map数据结构是二叉树(红黑树)
经过排序了的二元组的集合,map中的每个元素都是由两个值组成,其中的key(键值,一个map中的键值必须是唯一的)是在排序或者搜索时使用的,它的值可以在容器中获取;而另一个值是该元素关联的数值。比如,除了可以ar[43] = "overripe"这样找到一个数据,map还可以通过ar[“banana”] = "overripe"这样的方法找到一个数据。如果你想获得其中的元素信息,通过输入元素的全名就可以轻松实现。
6. multiset(多重集)
multiset数据结构是二叉树(红黑树)
和集合(set)相似,然而其中的值不要求必须是唯一的(即可以有重复)。
7. multimap(多重映射):
multimap数据结构是二叉树(红黑树)
和映射(map)相似,然而其中的键值不要求必须是唯一的(即可以有重复)。
什么是红黑树
红黑树,是一种自平衡二叉查找树,也叫RB树(Red-Black Tree)。RB树的统计性能要好于一般的平衡二叉树,所以被STL选择作为了关联容器的内部结构。
红黑树的特性:
- 每个节点或是黑色或是红色
- 根结点是黑色的
- 每个叶子节点为黑色(注:这里叶子节点是指为空(Nil或NULL的叶子节点))
- 如果一个节点是红色的,那么他的子节点必须是黑色的。
- 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。