容器的种类和数据结构

3.容器的种类和数据结构

STL容器通常分为三种:序列式容器、关联性容器和容器配接器。

1)序列式容器(sequence容器)。此类容器中的元素是有序的,但未排序。包括vector(动态数组),deque(双向队列),list(双向串)。

2)关联性容器,容器中的元素都经过排序。包括set,multiset,map,multimap,和hash(散列)table。

3)容器配接器,是以某种STL容器作为底,修改其接口,具备各自的特点。包括stack(栈),queue(队列),priority_queue(优先队列)。

STL容器的数据结构也包括三种:string(字符串)、bitset(位)和valarray(数组)。

1)string字符串。这种数据结构中保存的是字符。string并不是真正的类,而是1个basic_string类的类型定义。其定义为:

图示

2)bitset。这种数据结构中保存的是bits的结构体。每个bit表示1个标志(flag)。其长度固定。长度便是模板的自变量。详见例3-1。

例3-1

图示

例3-1的执行效果如图3-1所示。

图示(https://www.daowen.com)

图3-1 例3-1的执行效果

图3-1中,第1行字符正好是十进制数7的二进制表现形式;第2行字符正好是字符串“1000101011”。

3)valarray。这种数据结构是数学中的线性数列概念的呈现。其优点为:如同处理单一数值,对整个valarray中的每个元素实现运算。详见例3-2。

例3-2

图示

例3-2的执行效果如图3-2所示。

图示

图3-2 例3-2的执行效果

提示

请读者注意例3-2中valarray类型对象的使用方法。