我们把 vector 称为容器,是因为它像个容器一样存放各种类型的对象,简单的说,vector 是一个可以存放任意类型对象的动态数组,能够增加和压缩数据。

1. vector对象的定义和初始化

对象的定义如下:

vector<T>  v1; //vector保存类型为T的对象。默认构造函数v1为空

vector<T>  v2(v1); // v2是v1的一个副本

vector<T>  v3(n, i); // v3包含n个值为i的元素

vector<T>  v4(n); // v4含有值初始化的元素的n个副本

       值初始化规则如下:

a. 如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化;

b. 如果 vector 保存内置类型(如 int 类型元素),那么标准库将用0值创建元素初始化;

c. 如果 vector 保存的是含有构造函数的类类型的元素,标准库将用该类型的默认构造函数创建元素初始化式。

2. vector 对象的操作

v.empty(); //如果v为空,则返回true,否则返回 false

v.size(); //返回v中元素的个数

v.push_back(t); //在v末尾增加一个值为t的元素

v[n]; //返回v中位置为n的元素

v1 = v2; //把v1的元素替换为v2的重的元素的副本

v1 == v2; //如果 v1 与 v2相等,则返回true

!=, <, &lt;=, >, &gt;=; //保持这些操作符惯有的含义

需要注意的是:vector 下标操作不添加元素,用下标操作符是对已存在的元素进行索引。

如以下的做法是错误的:

vector<int> ivec ;

for ( vector<int>::size_type iv = 0; iv != 10; ++iv)

    ivec[iv] = iv;

正确的写法应该是:

vector<int> ivec ;

for ( vector<int>::size_type iv = 0; iv != 10; ++iv)

    ivec.push_back(iv);