vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型。vector的对象是可以动态生长的,这说明它在初始化时可以不用指定大小,而是再使用时根据元素所需的空间动态增长。C++中还有一种常见的类型string,它和vector有很多相似之处,具体可以看《C++标准库string类型的使用和操作总结》这篇博文。下面简单介绍一下vector容器的使用和操作。
一.声明和初始化
使用vector之前必须在程序前的库包含中包含相应的头文件,如下:
#include<vector>
using std::vector;
vector定义了几种构造函数,所以它提供了几种初始化的方式,如下:
vector<T> v1; //vevtor保存类型为T的对象。默认构造函数v1为空。 vector<T> v2(v1); //v2是v1的一个副本,v1和v2的元素类型必须相同 vector<T> v3(n,i); //v3包含n个值为i的元素 vector<T> v4(n); //v4包含初始化的元素的n个副本,默认元素值为0
二.常用操作
vector的很多操作都类似于string对象的操作,下面仅仅列出一些常用的操作。
v.empty(); //如果v为空,则返回true,否则返回false v.size(); //返回v中元素的个数 v.push_back(t); //在v的末尾添加一个值为t的元素 v[n]; //返回v中位置为n的元素,从0开始计数 v1=v2; //把v的内容替换为v2的一个副本 v1==v2; //比较v1和v2的内容,相等则返回true,否则返回false !=,<,<=,>和>= //保持这些操作符惯有的含义
值得注意的是在进行下标操作时,必须是已经存在的元素才能进行下标索引,否则通过下标索引赋值,不会添加任何元素,如:
vertor<int > ivec; for(vector<int >::size_type i=0;i!=10;++i) ivec[i]=i; //上面则条语句不会像容器添加任何元素,因为ivec是空的对象,所以应该改成下面的语句 vertor<int > ivec; for(vector<int >::size_type i=0;i!=10;++i) ivec.push_back(i);