标准库类型vector

来源:互联网 发布:北京知蜂堂上海店 编辑:程序博客网 时间:2024/06/15 09:50

标准库类型vector表示对象的集合,其中所有对象的类型都相同,集合中每个对象都有一个索引,通过索引可以找到并访问对象,也可以理解为vector为容器,vector是一个类模板。

即在模板名字后面跟着一对尖括号,在括号内放上信息,提供的额外信息就是vector内所存放对象的类型,如:

vector<int> ivec; //ivec保存int型类型对象,则为vector<int>类型

vector<string> svec; //svec保存string类型的对象,则为vector<string>类型

定义和初始化vector对象

初始化vector对象时与标准库类型string很相似,不同的是在于列表初始化时需要注意几点。

先说常规初始化操作,如:

vector<T> v1; //默认初始化,v1为一个空的集合

vector<T> v2(v1); //直接初始化,v2表示v1的副本

vector<T> v3 = v2; //复值初始化,与前者相同,v3表示v2的副本

vector<T> v4 = {a,b,c}; //列表初始化,集合中包含有a,b,c

vector<T> v5{a,b,c}; //同上

vector<T> v6(10,a); //v6包含10个重复的元素,每个都为a

vector<T> v7(10); //v7包含10个空元素,都为0;


注意的是列表初始化时,列表初始值还是元素数量?


显而易见列表初始化使用花括号,圆括号则不行,

vector<T> v4{a,b,c}; //列表初始化,集合中包含有a,b,c

vector<T> v5(a,b,c); //错误

如果初始化使用花括号的形式,但是提供的值又不能用来列表初始化,则就要考虑用这样的值来构造vector对象,如

vector<string> v1{"hi"}; //列表初始化,有一个元素

vector<string> v2("hi"); //错误,不能使用字符串字面值构建vector对象

vector<string> v3{10}; //v3有10个默认初始化的元素,因为花括号中提供值的类型与v3类型(vector<string>)相一致,才可以进行列表初始化

vector<string> v4{10,"hi"}; //v4有10个值为hi的元素


vector对象中添加元素

传统的初始化方法在有些时候太过笨重,不方便,则c++可以利用vector的成员函数puch_back实现向vector对象中添加元素,不可以使用下标运算符来增添对象

如:

vector<int> vec1;

for(int i = 0;i <= 10;++i)

vec1.puch_back(i);

cout << vec1 << endl;

其他对vector对象的操作与标准库类型string相一致







1 0
原创粉丝点击