标准库STL中的容器简单介绍

STL容器类(顺序容器、容器适配器、关联容器)

顺序容器

顺序容器按照线性次序位置存储数据结构

向量容器

向量由数组推广而来,它存储具有相同数据类型的一组元素。与数组一样的是,向量允许使用范围0~n-1内的下标访问其元素,其中n为向量大小。然而与数组不同的是,向量中的数据集可在序列尾部动态增长或收缩,以满足应用和程序在运行时的需要。
标准库STL中的容器简单介绍

链表容器

链表是按位置存储元素的数据结构。表中的每一项都有一个数值和一个内存地址(指针),内存地址标识表中的下一项。为了访问表中的特定数据值,必须从第一个位置(表头)开始,随着指针从一个元素到下一个元素,直到找到要找的数据值。因此,链表不是直接访问的。

表容器的特点

在任意位置都可以有效地添加和删除数据项。可以把表想象为环环相扣的链子。要添加元素,就要在链子中插入一个新的链环。
标准库STL中的容器简单介绍

表容器的应用场景

  • 顺序访问数据
  • 经常需要插入和删除元素的应用程序

关联容器

关联容器按键存储元素,如名字、社会保险号、零件号码。程序通过键访问关联容器中的元素,这些键可能与元素在容器中的位置无关。

集合容器

集合是唯一数值的集合,这些唯一的数值称为键或集合成员。集合关联容器有一系列允许以内需程序员判定数据项是否是集合成员以及有效地插入和删除数据项的操作。

  • 单重集合容器:值不允许重复的元素
  • 多重集合容器:值允许重复的元素

映射容器

映射是实现键-值关系的存储结构。它只允许程序员使用一个键来访问相应的数值。例如,这个值可以是一组数字,如A29-435,它对应价格$8.75和制造商Martin。映射不按位置存储元素;但是,它允许使用键作为下标。程序员可以使用键访问映射中的元素,就像是访问向量或数字元素一样。
标准库STL中的容器简单介绍

  • 多重映射:键允许重复的映射

  • 单重映射:键不允许重复的映射

容器适配器

适配器包含另一个容器作为其基本存储结构,它没有自己独特的数据结构。
标准库STL中的容器简单介绍

栈容器

栈是对元素进入和离开系列方式进行限制的存储结构。栈即允许对队列一端访问,这一端称为i栈顶。栈就像自助餐厅放托盘的架子一样。添加对象到序列中,就是将这个对象入栈。新项位于栈的顶部,栈中的其他项向下移动,以腾出空间。从栈中删除一项的操作称为出栈。

标准库STL中的容器简单介绍

栈容器的特点

数据项的出栈顺序和最初的入栈顺序相反,我们称其为后进先出。

栈容器的应用场景

  • 递归函数调用的运行时处理
  • 编译器用来计算表达式的算法

队列容器

队列是仅允许访问序列头和尾的容器。数据项从队尾进入,队首离开。在商店或银行的等候队列就是这样的。
标准库STL中的容器简单介绍

队列容器的特点

  • 先进先出

队列容器的应用场景

  • 基数排序算法
  • 一个由事件驱动的模拟

优先级队列容器

优先级队列容器是一种具有受限访问操作的存储结构,这些操作与栈、队列的操作类似。元素可以以任意顺序进入优先级队列。一旦元素在优先级队列容器中,删除操作将删除最大(或最小)的数值。可以把优先级队列看作滤波系统,它先吸收元素,然后按优先顺序释放他们。