for(int i=0;i<10;i++){for(int j=0;j<5;j++){PlanesID[0]= i;PlanesID[1]= j;PlanesIndex.push_back(PlanesID);}}为什么会报“无法使用带圆括号的初始值设定项初始化数组”的错误
时间: 2024-12-23 10:18:46 浏览: 6
这段代码试图在一个嵌套循环里动态地创建并添加数组元素到`PlanesIndex`向量中。但是,在C++中,当你尝试直接给数组赋初值,像`PlanesID[0] = i;` 这样,是不允许的,因为数组名本身是一个引用,而不是一个可以设置单独元素的对象。
正确的做法是先声明一个二维数组,然后在循环体内逐个设置每个元素,最后再将整个行作为一个数组元素添加到向量中。例如:
```cpp
int PlanesID[2][2]; // 声明一个2x2的二维数组
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
PlanesID[i % 2][j] = i; // 因为数组只有2行,所以每两个i循环一次覆盖一行
std::vector<std::array<int, 2>> planesIndex;
planesIndex.push_back(PlanesID[i]); // 添加整个行到向量
}
}
```
如果要避免数组大小限制,可以考虑使用动态分配内存,如`std::vector<std::pair<int, int>>`或者`std::vector<int[]>`。
阅读全文