C++:vector对象的初始化

一,定义

标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中每个对象都有与之对应的索引,索引用于访问对象。因为vector“容纳着”其他对象,所以它也被称为容器

vector是一个类模板

模板本身不是类或者函数,可以看作是编译器生成类或函数编写的一份说明。编译器根据模板创建类或函数的过程称为实例化,当使用模板时,需要指出编译器把类或函数实例化成何种类型。

vector<int> ivec;                //ivec保存int类型的对象
vector<Sales_item> Sales_vec;    //保存Sales_item类型的对象
vector<vector<string>> file;     //该向量的元素是vector对象

上述例子中,编译器根据模板vector生成了三种不同的类型:

vector<int>,vector<Sales_item>,vector<vector<string>>

 二,初始化vector对象

 初始化vector对象的拷贝方法和string类似,可参考我的上一篇博客C++标准库类型string_Lv547的博客-CSDN博客

在这里,我们着重介绍它的列表初始化方法。示例如下:

vector<int> v1(10);        //v1有10个元素,每个数的值都是0
vector<int> v2{10};        //v2有1个元素,值是10

vector<int> v3(10,1);      //v3有10个元素,每个数的值都是1
vector<int> v4{10,1};      //v4有2个元素,值分别是10和1

当我们使用圆括号“(  )”时,提供的值是用来构造vector对象。

如v1的初始值说明vector对象的容量,v3的初始值说明了vector对象的容量和元素的初值。

当我们使用花括号“{   }”时,初始化过程会将提供的值当成元素初始值的列表来处理。(即列表初始化),只有当无法执行列表初始化时才会考虑其他初始化方式。

上例中,v2和v4提供的值都只能作为元素的值,所以它们都会执行列表初始化,即v2包含一个元素,v4包含2个元素。

另外,如果初始化时使用了花括号,但提供的值又不能用来列表初始化,就需要考虑用这样的值构造vector对象了。

vector<string> v5{"hi"};        //列表初始化:v5有一个元素
vector<string> v6("hi");        //错误:不能用字符串字面值构建vector对象
vector<string> v7{10};          //v7有10个默认初始化的值
vector<string> v8{10,"hi"};     //v8有10个值为"hi"的元素

上例中,只有v5是列表初始化。

想要列表初始化vector对象,花括号里的值必须与元素类型相同。

故显然不能用int初始化string对象,故v7,v8提供的值不能作为元素的初始值。

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值