You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何下述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,提问作者박상현

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:09:06