顺序容器 | |
vector | 支持快速随机访问 |
list | 支持快速插入/删除 |
deque | 双端队列 |
顺序容器适配器 | |
stack | 后进先出(LIFO)栈 |
queue | 先进先出(FIFO)队列 |
priority_queue | 有优先级管理的队列 |
头文件:
#include <vector>
#include<list>
#include<deque>
所有的容器都是类模板。
定义某种类型的容器:
vector<string> sevc;
list<int> ilist;
deque<Sales_item> items;
所有容器的类型都定义了默认的构造函数,用于创建指定类型的空容器对象。默认构造函数不带参数。(大多程序中,使用默认构造函数能达到最佳运行性能,并且使容器更容易使用)
2.复制容器对象的构造函数与使用两个迭代器的构造函数之间的差别。
复制容器对象的构造函数:将一个容器初始化为另一个容器的副本(即复制另一个容器的全部元素),类型必须匹配(容器类型和元素类型必须相同)。
vector<int> ivec1;
vector<int> ivec2(ivec1);
使用两个迭代器的构造函数:将一个容器初始化为另一容器的子序列(即复制另一个容器的子序列),而且采用这种构造函数不要求两个容器是同类型的。
3.创建和初始化一个vector对象有四种方式:
- 分配指定数目的元素,并对这些元素进行初始化:
vector<int> ivec(10);//ivec包含10个0值元素
- 分配指定数目的元素,并将这些元素初始化为指定值:
vector<int> ivec(10,1);//ivec包含10个值为1的元素
- 将vector对象初始化为一段元素的副本:
int ia[10]={0,1,2,3,4,5,6,7,8,9};
vector<int> ivec(ia,ia+10);
- 将一个vector对象初始化为另一个vecctor对象的副本:
vector<int> ivec1(10,1);
vector<int> ivec2(ivec1);