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

C++中两种vector初始化写法的作用是否完全等价?

C++ 两种vector写法区别

这两种写法的作用完全不同,核心差异如下:

  • 第一种写法 vector<int> dist(1+n, INF);
    这是创建单个vector<int>对象,调用vector的填充构造函数完成初始化:
    • 该vector初始有1+n个int类型元素
    • 所有元素的初始值均为INF
    • 存储长度可后续动态调整,支持push_back、resize等修改容量的操作
    • 其中n可以是运行期才确定的变量,不需要是编译期常量
  • 第二种写法 vector<int> dist[INF];
    这是创建长度为INF的数组,数组的每个元素都是独立的vector<int>对象:
    • 数组总共有INF个vector<int>实例,每个实例默认初始化为空vector,不会被设置初始值为INF
    • 数组长度固定不可修改,且要求INF必须是编译期可确定的常量,否则无法通过编译

可以用简单示例辅助理解:假设n=3,INF=10

  • 第一种写法得到的dist是1个vector,内部元素为[10,10,10,10](共4个元素)
  • 第二种写法得到的dist是长度为10的数组,每个位置都是空的vector,没有任何初始int元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:39:03