标准库类型vector表示对象的集合,其中所以对象的类型都相同。
定义和初始化vector对象
vector<T> v1 v1是一个空vector,T表示元素类型
vector<T> v2(n,val) v2包含n个值为val的元素
vector<T> v3(n) v3包含n个重复执行了值初始化的对象
vector<T> v4{a,b,c...} v4包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T> v5={a,b,c...} 同v4
vector<T> v6=v5 v6中包含v5中所以元素的副本
vector<T> v7(v5) 等价于v6=v5
下面是初始化时要注意的问题:
1、圆括号与花括号的区别
vector<string> v1{"a","an","the"}; //列表初始化
vector<string> v1("a","an","the"); //错误
2、列表初始值还是元素数量
vector<int> v1(10); //v1中有10个元素,每个值都是0
vector<int> v2{10}; //v2中有1个元素,该元素值为10
vector<int> v3(10,1); //v3中有10个元素,每个元素的值都是1
vector<int> v4{10,1}; //v4中有两个元素,值分别是10和1
vector<string> v5{10}; //v5有10个默认初始化的元素
vector<string> v6{10,"hi"}; //v6有10个值为"hi"的元素
还可以使用数组初始化vector对象:
int a[]={0,1,2,3,4,5};
vector<int> ivec(begin(a),end(a)); //ivec中有6个元素,分别是a中对于的元素副本
vector<int> avec(a+1,a+4); //vector中有3个元素,分别是a[1],a[2],a[3]
向vector对象中添加元素
创建一个vector对象,令其包含0到99共100个对象:
vector<int> v;
for(int i=0;i!=100;++1)
v.push_back(i);
如果要到运行时才知道vector对象中元素的个数:
vector<string> s;
string str;
while(cin>>str){
s.push_back(str);
}
下标运算
vector可以使用下标运算符获取指定的元素。和string一样,它的下标也是从0开始计起,但注意不要用下标形式添加元素:
vector<int> v;
for(decltype(v.size()) i=0;i!=10;++i)
v[i]=i; //错误,v中不包含任何元素