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;
}
}
我理解错误的意思,但我找不到原因,我们已经用简单数组variableqtdmosquitopoleculla
创建的相同变量创建了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;
}
}
}