第九章-顺序容器----重学C++之《 C++ PRIMER》

本章讲解了顺序容器以及他们通用的接口操作。

涉及的容器有:顺序容器vector,list,deque,并提及了stack,queue,priority_queue这三种容器适配器。最常用的容器是vector,支持对元素的快速访问。

主要内容:

1 容器的定义和初始化

2 迭代器的操作。迭代器的元素范围是左闭合区间,即[  )。

3 顺序容器的操作

插入和删除。

比较.

设置容器大小。

赋值和swap.

4 vector容器的自增长。对于大部分应用,vector容器都是最好的。

因为这种特性使得比起list和deque,vector的增长效率更高。

理论上,vector容器为了实现快速的随机访问,元素以连续的方式存放。当插入新的元素时,由于空间不够可能需要分配新的内存空间(分配新空间,存放原来的和新的元素,撤销旧的空间),这会导致性能很慢。

实际上,为了使容器实现快速的内存分配,实际分配的容量比当前所需的空间多一些。vector容器预留了这些额外的存储区,用于存放新添加的元素。于是不必为新添加的元素重新分配容器。(当每次空间不够时,容器不是只添加了一个元素的空间,而是添加了一大块空间------实际的实现中,常出现增加当前空间的一倍)

5 容器的选用

需要考量的因素:1中间位置插入删除的代价。2元素随机访问的代价。

容器选择的法则:

(1)如果程序随机访问,则选择vector和deque.

(2)如果需要中间位置插入或者删除,使用list。

(3)如果程序在首尾插入或删除,使用deque.

(4)如果读取输入时在中间位置插入元素,然后随机访问。则输入时使用list,然后重排容器使之适合顺序访问,然后复制到vector

 

6 string类型

在某些方面,string可视为字符容器。因此支持大多数vector容器的操作。

初始化

修改元素

字符串替换

字符(串)查找

比较

7容器适配器(理解上也是容器)

容器适配器是让一种已存在的容器类型采用,采用另一种不同的抽象类型的工作方式实现。如stack就可以让任何一种顺序容器以栈的方式工作。简单说来,容器适配器是由容器构造。用以提供另一种工作方式。

stack建立在三种顺序容器之上,queue(队列?)只能建立在list(链表?)之上,priority_queue只能建立在vector和deque上。默认情况,stack建立在deque之上。

 

 

 

 

posted @ 2012-04-22 16:33  唐僧吃肉  阅读(188)  评论(0编辑  收藏  举报