《STL源码剖析》笔记-容器的分类

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/WizardtoH/article/details/82470001

上一篇:《STL源码剖析》笔记-迭代器iterators

任何特定的数据结构都是为了实现某种特定的算法,STL中的容器是将运用最广的一些数据结构进行实现,例如:数组array、链表list、树tree、堆栈stack、队列queue、散列表hash talbe、集合set、映射表map等。根据数据在容器中的排列特性,可以分为序列式容器和关联式容器。
这里写图片描述

序列式容器

序列式容器,其中的元素都可序(ordered),但未必有序(sorted)。C++语言本身提供了一个序列式容器array,STL另外再提供了vector,list,deque,stack,queue,priority-queue等等序列式容器。其中stack和queue由于只是将deque改头换面而成,技术上被归类为一种配接器(adapter)。

  • ordered,其顺序是基于数据结构的,与其中所存对象的值没有关系,比如vector是基于索引的,set是基于插入顺序的。
  • sorted,字母顺序和数字大小这种自然顺序排列。

关联式容器

关联式容器,所有数据都包含一个键值(key)和实值(value)。当元素被插入到关联式容器时,会以某种特定的规则将元素方法到适当的位置。于序列式容器不同,关联式容器没有头尾的概念,所以不会有push_back之类的成员函数。一般情况,关联式容器内部结构是一个平衡二叉树,以便获得良好的搜寻效率。平衡二叉树也有很多类型,STL中使用最多的是红黑树(RB tree,后续会进行详细的介绍)。

下一篇:《STL源码剖析》笔记-vector

猜你喜欢

转载自blog.csdn.net/WizardtoH/article/details/82470001