编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > C++ > 顺序容器 >

C++ 顺序容器


第九章介绍了最常用的顺序容器:vector 类型。本章将对第九章的内容进行扩充和完善,继续讨论标准库提供的顺序容器类型。顺序容器内的元素按其位置存储和访问。除顺序容器外,标准库还定义了几种关联容器,其元素按键(key)排序。我们将在下一章讨论它们。


容器类共享公共的接口,这使标准库更容易学习,只要学会其中一种类型就能运用另一种类型。每种容器类型提供一组不同的时间和功能折衷方案。通常不需要修改代码,只需改变类型声明,用一种容器类型替代另一种容器类型,就可以优化程序的性能。


容器容纳特定类型对象的集合。我们已经使用过一种容器类型:标准库 vector 类型,这是一种顺序容器(sequential container)。它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。


标准库定义了三种顺序容器类型:vector、list 和 deque(是双端队列“double-ended queue”的简写,发音为“deck”)。它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。标准库还提供了三种容器适配器(adaptors)。实际上,适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。顺序容器适配器包括 stack、queue 和 priority_queue 类型,见表 9-1。


容器只定义了少量操作。大多数额外操作则由算法库提供,我们将在第十一章学习算法库。标准库为由容器类型定义的操作强加了公共的接口。这些容器类型的差别在于它们提供哪些操作,但是如果两个容器提供了相同的操作,则它们的接口(函数名字和参数个数)应该相同。容器类型的操作集合形成了以下层次结构:

一些操作适用于所有容器类型。

另外一些操作则只适用于顺序或关联容器类型。

还有一些操作只适用于顺序或关联容器类型的一个子集。

在本章的后续部分,我们将详细描述顺序容器类型和它们所提供的操作。

表 9.1. 顺序容器类型

顺序容器  
vector 支持快速随机访问
list 支持快速插入/删除
deque 双端队列
顺序容器适配器  
stack 后进先出(LIFO)堆栈
queue 先进先出(FIFO)队列
priority_queue 有优先级管理的队列

 




C++
C++ 顺序容器