容器
容器包括:向量vector 列表list 双队列deque 集合(树)set 多重集合multiset 映射(图)map 多重映射multimap
vector是包含一个或多个元素的数组
list是由节点组成的双向链表 每个节点包含一个元素
deque是包含n个连续指向不同元素的指针组成的数组
容器成员满足的条件
1 元素必须是可复制的,所有容器均会产生一个元素副本,所有容器操作返回的均是其元素的副本,导致复制构造函数经常执行
2 元素必须可指派 所有容器的成员函数均可以利用assign函数赋值
3 元素必须可释放 将元素从容器中删除时,必须释放该元素占有的内存,故析构函数不能设为私有
容器成员函数满足的条件
1 容器均能提供value(值)而非引用
2 所有的元素自动行程顺序(按照顺序可以多次遍历所有元素)。利用迭代器(类似指针)可以遍历元素
容器的种类
1 序列式:元素都是有序的但是未排序 包括 vector deque list
2 关联式容器: 容器中的元素都是排序后的 包括 set multiset map multimap
3 容器配接器:以某种stl容器作为底,修改其接口让其具备自身的特点 包括stack queue
容器的数据结构
1 string字符串:保存字符 不是真正的类 而是basic_string的typedef
2 bitset :保存bits的结构体 每个bit表示1个标志
3 valarray :线性数列的概念
本文选自C++ STL标准程序库开发指南