为何下述C++代码输出结果为1?未显式定义sum[0]却出现该结果
问题解答:为什么vector的sum[0]存在且程序输出1?
嘿,让我们一步步拆解你的代码,搞清楚这个疑惑点~
首先看你代码的第一行:
std::vector<int> sum(1);
这行代码调用了std::vector的带数量参数的构造函数,它的作用是:创建一个包含1个int类型元素的vector容器,并且这些元素会被值初始化。对于int这种基础数据类型来说,值初始化意味着默认设置为0。也就是说,在这一行执行完之后,sum已经有了第一个元素,对应的索引就是0——这就是sum[0]的由来,你虽然没有手动写类似int sum_0 = ...这样的显式定义,但vector的构造函数已经自动帮你创建并初始化了这个元素。
接下来看后续的代码:
sum.push_back(1); sum[0] = 1; std::cout << sum[1];
sum.push_back(1):向vector的末尾添加一个新元素,值为1。此时vector的大小从1变成2,索引1对应的就是这个刚添加的元素。sum[0] = 1:这并不是“定义”sum[0],而是给已经存在的sum[0]重新赋值,把它从初始的0改成了1。- 最后输出
sum[1],自然就会打印出你刚push进去的1。
总结一下:你觉得自己没显式定义sum[0],是因为忽略了vector构造函数的行为——带整数参数的构造函数会自动为你创建对应数量的元素,不需要手动逐个定义每个索引的元素。
内容的提问来源于stack exchange,提问作者박상현
相关产品推荐
相关产品推荐

