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

在Visual Studio Code中使用C++14时,vector初始化问题咨询

关于C++14中vector初始化与遍历的问题解答

先帮你梳理下这段代码的逻辑,再说说实际开发里需要注意的细节:

你的代码用C++11引入的列表初始化语法创建了一个包含3个int元素的vector,之后通过at()方法访问并修改元素。正常运行的话,它会输出:

a contains 5 5 5 
a contains 8 8 8 

不过这里有几个容易踩坑的点,给你提个醒:

  • 别用独立常量绑定vector的大小:你定义了const int SIZE = 3,但如果后续修改vector的初始化列表(比如改成{5,5}),SIZE还是3,这时候a.at(i)在i=2时会直接抛出std::out_of_range异常。更稳妥的做法是直接用a.size()获取vector的实际大小,比如把循环改成:

    for (int i = 0; i < a.size(); i++)
    

    或者用C++11及以后的范围for循环,代码更简洁安全:

    for (int num : a)
        cout << num << ' ';
    
  • 区分列表初始化和填充初始化:vector<int> a{5,5,5}是列表初始化,直接把括号里的元素放进vector;但如果写成vector<int> a(3,5),这是填充初始化,会创建一个有3个元素、每个元素都是5的vector,效果和你的代码一致。但如果写成vector<int> a{3,5},那就是创建包含3和5两个元素的vector,这点一定要区分清楚,别搞混了。

  • 关于using namespace std;的小建议:测试代码里用这个很方便,但大型项目里不推荐,容易引发命名冲突——比如你自己定义的cout或者vector会和标准库的同名元素冲突。

如果你的代码运行报错(比如越界异常),大概率是SIZE和vector实际大小不一致导致的,换成a.size()就能解决问题。


内容的提问来源于stack exchange,提问作者Lydia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:01:40