vector<int>ivec(20) 的理解!

今天看到书本上有一句话是这样写的:要定义一个能够存放20个整数的向量对象,我们可以这样写:vector<int>ivec(20);

 一开始我是这样理解的,我把它理解成了像数组一样,定义为20个元素的数组,然后往里面添加元素。如果超过20个会数组越界。

后来我为了验证我的理解,我就写代码验证了一下,发现我理解的是错误的?

vector<char> ivec(26);
cout << "<<<--" << ivec.capacity() << "-->>>" << endl;
定义了一个存储26个字符的向量对象,打印出来的容量是26;

然后我循环了26次添加了26个字母:

char ca[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

for(int i = 0;i < 26;i++){
ivc.push_back(ca[i]);
}
打印出来的容量是52;

一开始我很纳闷,我觉得容量应该是26,因为我没添加什么。然后我就把ivec打印了一遍,我看到打印出26个空字符。

这个时候我才明白,原来是这个定义存放26个字符的向量对象,定义了26个,顺便也把他初始化了。由于vector是可以动态变化的,我后添加进去的元素,就按照顺序往后添加了。不过书上的那句话,确实让我理解错了,如果在后面添加上一句话,我想应该会好理解一点。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值