Vector<T>容器以类似于普通数组的方式存储类型T的对象,只是它的容量可以根据需要存储的对象个数进行调整。使用下标运算符[]可以像数组那样访问vector容器中的元素。Vector容器的大小是其中元素的个数。其容量是当前它可以包含的最大元素数。调用size()和capacity()成员分别可以获得vector容器的大小和容量。这两个成员返回的值都是size_type类型,它由typedef定义为无符号的整数类型,通常与size_t相同。给vector添加一个或多个元素,其大小就会以某个比例增长,以容纳新元素,所以其容量就会大于(肯定不会小于)其大小。只添加或删除序列尾部的元素时,vector是最高效的。
使用vector容器:
创建vector容器
Std::vector<int> numbers;
创建一个vector容器,它包含10个int类型的元素:
Std::vector<int> samples(10);
这个vector容器有10个初始化为0的元素。
创建一个vector容器,它包含50个double类型的元素,并且每个值都初始化为3.14159
Std::vector<double>(50,3.14159);
第一个参数是容器中的元素个数,这些元素都初始化为第二个参数指定的值。
Std::vector<int> sample(values,values+sizeof values/sizeof value[0]);
这个构造函数需要两个迭代器参数指定的间隔,但因为指针是最好的迭代器,所以可以使用指针指向数组的元素。两个参数把值的范围指定为半开间隔。半开间隔就是在一组值中包含一个范围界限,不包含另一个范围界限。这句话的意思是sample容器取values[0],values[1],values[2]…..values[sizeof values/sizeof values[0]] 这些数。
Iterator类型在vector对象中定义为指向所存储对象的类型指针。Vector对象的begin()成员返回iterator类型的对象,它指向第一个元素。End()成员返回一个迭代器,指向vector中最后一个元素后面的元素。使用这些迭代器可以遍历vector中的元素。例:
std::vector<double> pies(20,3.14159);
Double sum_pies=0.0;
For(std::vector<double>::iterator iter=pies.begin();iter!=pies.end();iter++)
Sum_pies+=*iter;
反向迭代器:
vector 容器还可以提供反向迭代器,从后向前遍历元素。成员rbegin()返回reverse_iterator类型的迭代器,它指向vector 容器中的最后一个元素。递增这个迭代器会把指针移向上一个元素。Rend()成员函数返回的迭代器指向vector 容器中第一个元素前面的位置。