C++之 容器

来源:互联网 发布:kali破解指定端口 编辑:程序博客网 时间:2024/05/29 18:21

Vector<T>容器以类似于普通数组的方式存储类型T的对象,只是它的容量可以根据需要存储的对象个数进行调整。使用下标运算符[]可以像数组那样访问vector容器中的元素。Vector容器的大小是其中元素的个数。其容量是当前它可以包含的最大元素数。调用size()capacity()成员分别可以获得vector容器的大小和容量。这两个成员返回的值都是size_type类型,它由typedef定义为无符号的整数类型,通常与size_t相同。给vector添加一个或多个元素,其大小就会以某个比例增长,以容纳新元素,所以其容量就会大于(肯定不会小于)其大小。只添加或删除序列尾部的元素时,vector是最高效的。

 

使用vector容器:

       创建vector容器

Std::vector<int> numbers;

创建一个vector容器,它包含10int类型的元素:

Std::vector<int> samples(10);

这个vector容器有10个初始化为0的元素。

创建一个vector容器,它包含50double类型的元素,并且每个值都初始化为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容器中第一个元素前面的位置。

 

原创粉丝点击