vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。我们把vector称为容器,是因为它可以包含其他的对象,且一个容器中的所有对象都必须是同一种类型的。
vector是一个类模板,可用来定义任意多种数据类型,vector类型的每一种都指定了其保存的元素类型,如:vector<int>和vector<string>都是数据类型。再举一个例子,vector<int> ivec;的意思是说容器名为ivec保存的数据类型为int。
vector对象的定义和初始化:以下为几种初始化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个副本。
例:vector<int> ivec(10 ,7) 容器名为ivec的容器包含有10个元素,每一个被初始化为7
vector对象的重要性就在于它在运行时可以高效地添加元素,因为vector增长的效率高,在元素值已知的情况下,最好是动态地添元素。虽然可以对给定元素个数的vector对象预先分配内存,但更有效的方法是先初始化一个空的vector对象,然后再动态地增加元素。
vector对象的操作:有如下操作
v.empty( ) 如果v为空,则返回true,否则返回false。
v.size( ) 返回v中元素的个数。
v.push_back( t ) 在v的末尾增加一个值为t的元素、
v[n] 返回v中位置为n的元素
使用size_type类型时,必须指出该类型是在哪里定义的,vector类型总是包括vector的元素类型,如:
vector<int>::size_type ix=0;这个主要是用来用作下标操作的,前提是必须是已存在的元素才能用下标操作符。
向vector添加元素:push_back( )操作接受一个元素值 ,并将它作为一个新的元素添加到vector对象的后面,也就是插入到vector对象的后面(back):
string word;
vector<string> text;
while(cin>>word){
text.push_back(word);
}
该循环从标准输入读取一系列string对象,逐一追加到vector对象的后面。首先定义一个空的vector对象text。每循环一次就添加一个新的元素到vector对象中,并将从输入读取的word值赋予该元素。当循环结束时,text就包含了所有读入的元素了。