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

初始化vector<int>数组遇编译错误:initialization with '{...}' expected

代码问题分析与修正

你的代码错误根源在于类型不匹配,具体细节如下:

  • vector<int> *vec[] 声明的是静态指针数组(数组内每个元素都是指向vector<int>的指针),属于C++的聚合类型,必须用{...}形式的初始化列表完成初始化。
  • 而new vector<int>[n+1]返回的是指向vector<int>数组的指针(类型为vector<int>*),和指针数组的类型完全不兼容,因此编译器抛出"initialization with '{...}' expected for aggregate object"错误。

正确写法分两种场景:

场景1:创建动态vector<int>数组

如果目标是开辟连续内存存放n+1个vector<int>对象,应将变量声明为指向数组的指针:

vector<int>* vec = new vector<int>[n+1];

后续可通过vec[i]访问第i个vector<int>对象,使用完毕后记得用delete[] vec;释放内存。

场景2:创建动态指针数组(元素为独立vector<int>的指针)

如果确实需要一个数组,每个元素都指向独立的vector<int>对象(比如每个vector需单独分配内存),应声明为二级指针:

vector<int>** vec = new vector<int>*[n+1];
// 逐个初始化每个指针元素
for(int i = 0; i <= n; ++i){
    vec[i] = new vector<int>();
}

释放内存时需先逐个删除每个vector,再删除指针数组:

for(int i = 0; i <= n; ++i){
    delete vec[i];
}
delete[] vec;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:56:04