C++中两种vector初始化写法的作用是否完全等价?
C++ 两种vector写法区别
这两种写法的作用完全不同,核心差异如下:
- 第一种写法
vector<int> dist(1+n, INF);
这是创建单个vector<int>对象,调用vector的填充构造函数完成初始化:- 该vector初始有
1+n个int类型元素 - 所有元素的初始值均为
INF - 存储长度可后续动态调整,支持
push_back、resize等修改容量的操作 - 其中
n可以是运行期才确定的变量,不需要是编译期常量
- 该vector初始有
- 第二种写法
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
相关产品推荐
相关产品推荐

