vector是同一种类型的对象集合,并且每个对象都有一个对应的整数索引值。vector是传说中的容器的一种,即在其中可以存储各种类型的数据,很变态的一点是动态存储的,也就是说,可以让你随便删除,随便插入特定类型的数据单元。但是,要保证一个vector或者容器里面只能存放一种数据类型,否则,你就把它给玩儿坏了~
1、声明与定义
首先,头文件和相关声明必不可少:
#include <vector>
using std::vector
vector是一个类模板,声明从类模板产生的某种类型的对象,需要提供附加信息,信息的类别取决于模板。我们必须明确的指出我们所声明的这个vector保存的哪一种数据类型,数据类型可以是int,double,string,char等等,也可以是我们自己定义的类或者结构体。将类型放在vector后面的尖括号里面来指定要定义的集合类型:
vector<string> strvec;
vector<float> fvec;
上段代码声明了2个容器变量,第一个是变量名为strvec的string类型的容器,另一个是名为fvec的float类型的容器。其中,strvec里面只能存放任意多个string类型的数据,而不能存放其他类型的数据。fvec中也一样只能存放float类型的数据。这两行代码,不但做了声明,同时也做了初始化。即初始化了2个空的vector的对象。其实还有别的初始化方法,就不一一列出来了,因为一般的流程呢,是先初始化一个空的vector对象,然后动态的往里面添加元素,然后可能删除一些,取出一些,balabalabala~不废话了,开始讲操作吧~
2、vector对象的操作
添加元素:
vector<int> ivec;
for(vector<int>::size_type idx=0; idx != 10; idx++)
ivec.push_back(idx);
ivec中添加了10个元素,0,1,2,3,……,9。利用成员函数push_back(para),来进行添加,插入到容器的尾部,para表示插入的元素。size_type可以理解为int类型,实际上两者差距还是很多的。
删除元素:
ivec.erase(ivec.begin()); //删除第一个元素
ivec.erase(ivec.begin(),ivec.begin()+2); //删除前两个元素
ivec.erase(ivec.end()-1); //删除最后的元素
其实还有一种叫做迭代器的东西,它在容器中用处很大。容器和迭代器可以类比于数组和指针。有机会再写吧,找妹子去啦~