Чтобы динамически создать трехмерный массив целых чисел, лучше сначала понять 1D и 2D массив.
1D массив : Вы можете сделать это очень легко с помощью
const int MAX_SIZE=128;
int *arr1D = new int[MAX_SIZE];
Здесь мы создаем int-указатель, который будет указывать на кусок памяти, где могут храниться целые числа.
2D-массив : Вы можете использовать решение вышеупомянутого 1D-массива для создания 2D-массива.Сначала создайте указатель, который должен указывать на блок памяти, где хранятся только другие целочисленные указатели, которые в конечном итоге указывают на фактические данные.Так как наш первый указатель указывает на массив указателей, то это будет называться указатель на указатель (двойной указатель).
const int HEIGHT=20;
const int WIDTH=20;
int **arr2D = new int*[WIDTH]; //create an array of int pointers (int*), that will point to
//data as described in 1D array.
for(int i = 0;i < WIDTH; i++){
arr2D[i] = new int[HEIGHT];
}
3D Array : это то, что вы хотитеделать.Здесь вы можете попробовать обе схемы, использованные в вышеупомянутых двух случаях.Применяйте ту же логику, что и 2D-массив.Диаграмма в вопросе объясняет все.Первый массив будет указателем на указатель на указатель (int *** - поскольку он указывает на двойные указатели).Решение, как показано ниже:
const int X=20;
const int Y=20;
const int z=20;
int ***arr3D = new int**[X];
for(int i =0; i<X; i++){
arr3D[i] = new int*[Y];
for(int j =0; j<Y; j++){
arr3D[i][j] = new int[Z];
for(int k = 0; k<Z;k++){
arr3D[i][j][k] = 0;
}
}
}