vector模板的初始化注意事项

一、一般情况下{}里面表示的是具体初始化的元素值,()里面表示的是容器的容量和默认初始化的值或者指定初始化的值。

vector<int>v1;
vector<int>v2(v1);
vector<int>v3 = v1;
vector<int>v4(10, 1);
vector<int>v5(1);
vector<int>v6{ 1,2,3,4,5 };
vector<int>v7 = { 1,2,3,4,5,6 };

二、另一方面,如果初始化时使用了花括号的形式但是提供的值又不能用来列表初始化,就需要考虑用这样的值来构造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"的元素

三、不能用下标形式添加元素,只能用push_back()来添加元素
vector<int> ivec;//空vector对象
for(decltype(ivec.size()) ix = 0; ix < 10; ++ ix)

     ivec[ix] = ix;//严重错误:ivec不包含任何元素


for(decltype(ivec.size()) ix = 0; ix < 10; ++ix)

  ivec.push_back(ix);//正确:添加一个新元素,该元素的值是ix。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值