关于C++ STL vector的问题

以下程序为什么给出的a.size()是19而不是21呢,而且a.back()的结果也是1,是只有push_back插入才会改变size和back吗?谢谢vector<in... 以下程序为什么给出的a.size()是19而不是21呢,而且a.back()的结果也是1,是只有push_back插入才会改变size和back吗?谢谢
vector<int>a(19,1);
a[19]=19;
a[20]=20;
cout<<a.size()<<endl;
cout<<a.back()<<endl;
展开
 我来答
超鬼崩盘帝
2015-10-15 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:74.3万
展开全部

我用的vs2015编译出来,capacity只有19,index=19和20都是越界的访问方式,会bug。

你的情况没有报错是因为某些编译器的vector会在你的19的基础上多申请一部分空间,但是size还是19,所以back也只会是a[18]。另外[]算是一种地址查找运算符,并不会增加vector的size。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式