一 泛型
这些算法可作用于各种不同的容器类型,而这些容器又可以容纳多种不同类型的元素。
1.1 顺序容器
将单一类型的元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。
(1)vector list,deque 三种类型。
(2)容器适配器----根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。
包括:stack,queue,priority_queue。
(3)List容器并不支持关系操作。
1.1.2
所包含的的头文件
#include <list>
#include <vector>
#include <deque>
1.1.3 容器定义的类型别名
不要存储end操作返回的迭代器。添加或删除deque或vector容器内的元素都会导致存储的迭代器失效。为避免存储end迭代器,可以再每次做完插入运算后重新计算恩断迭代器的值。
swap操作实现交换两个容器内所有元素的功能。要交换的容器的类型必须匹配:操作数必须是相同类型的容器,而且所存储的元素类型也必须相同。
1.4 选择容器类型的法则
1.4.1 如果程序要求随机访问元素,则应使用vector或deque容器。
1.4.2 如果程序必须在容器的中间位置插入或删除元素,则应采用list容器。
1.4.3 如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用deque容器。
1.4.4 如果只需在读取输入时在容器的中间位置插入元素,然后需要随机访问元素,则可考虑在输入时将元素读入到一个list容器,接着对此容器重新排序,使其适合顺序访问,然后将排序后的list容器复制到一个vector容器。
1.5 string
string类型不支持以栈的方式操纵容器:在string类型中不能使用front,back和pop_back操作。