C++ 如何访问位置2c+的三维阵列+;

C++ 如何访问位置2c+的三维阵列+;,c++,C++,我在访问三维数组的第二个位置时遇到问题。 见代码: int qtdMosquitos = 2500000; int altura = 500, largura = 500, i, j, k, qtdMosquitoPorCelula = qtdMosquitos /(altura*largura); long id = 1; Mosquito* mosquitos[qtdMosquitos][qtdMosquitos][qtdMosquitoPorCelula]; Mosquito* list

我在访问三维数组的第二个位置时遇到问题。 见代码:

int qtdMosquitos = 2500000;

int altura = 500, largura = 500, i, j, k, qtdMosquitoPorCelula = qtdMosquitos /(altura*largura);
long id = 1;
Mosquito* mosquitos[qtdMosquitos][qtdMosquitos][qtdMosquitoPorCelula];
Mosquito* listaMosquitos[qtdMosquitoPorCelula];

for (i = 0; i < altura; i++) {
    for (j = 0; j < largura; j++) {
        for (k = 0; k < qtdMosquitoPorCelula; k++) {
            Mosquito* mosquito = new Mosquito();
            mosquito->setId(id);
            mosquito->setState("S");
            listaMosquitos[k] = mosquito;
         }
         mosquitos[i][j] = listaMosquitos;
    }
}
我理解错误的意思,但我找不到原因,我们已经用简单数组variable
qtdmosquitopoleculla
创建的相同变量创建了3D矩阵的实例

你能帮我设置3D数组的值吗?
如下所示:
matrix[0][1]=arraySimples

,因为C中的数组是数组第一个元素的指针。因此,守则

mosquitos[i][j] = listaMosquitos;
意味着将
listaMosquitos[0]
的指针分配给
mosquitos[i][j][0]
,这将导致内存问题,编译将禁止它

在代码示例中,我们可以对以下代码示例执行相同的操作:

.....
for (i = 0; i < altura; i++) {
    for (j = 0; j < largura; j++) {
        for (k = 0; k < qtdMosquitoPorCelula; k++) {
            Mosquito* mosquito = new Mosquito();
            mosquito->setId(id);
            mosquito->setState("S");
            listaMosquitos[k]  = mosquito;
            mosquitos[i][j][k] = mosquito;
        }
    }
}
。。。。。
对于(i=0;isetId(id);
蚊子->设定状态(“S”);
listaMosquitos[k]=蚊子;
蚊子[i][j][k]=蚊子;
}
}
}

您正在将整个数组分配给矩阵中的
[i,j]
位置。不能这样做,必须在数组上循环并复制每个元素。
.....
for (i = 0; i < altura; i++) {
    for (j = 0; j < largura; j++) {
        for (k = 0; k < qtdMosquitoPorCelula; k++) {
            Mosquito* mosquito = new Mosquito();
            mosquito->setId(id);
            mosquito->setState("S");
            listaMosquitos[k]  = mosquito;
            mosquitos[i][j][k] = mosquito;
        }
    }
}