Para crear dinámicamente matriz 3D de números enteros, es mejor entender 1D y 2D primera matriz.
serie 1D: Usted puede hacer esto muy fácilmente por
const int MAX_SIZE=128;
int *arr1D = new int[MAX_SIZE];
Aquí, estamos creando un int-puntero que apunte a un trozo de memoria donde se pueden almacenar números enteros.
matriz 2D: Puede usar la solución de la matriz 1D anterior para crear una matriz 2D. Primero, cree un puntero que debe apuntar a un bloque de memoria donde solo se mantienen otros punteros enteros que finalmente apuntan a datos reales. Dado que nuestro primer puntero apunta a una matriz de punteros, esto se llamará puntero-a-puntero (puntero doble).
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 matriz: Esto es lo que quiere hacer. Aquí puede probar el esquema utilizado en los dos casos anteriores. Aplica la misma lógica que la matriz 2D. El diagrama en cuestión lo explica todo. La primera matriz será puntero-a-puntero-a-puntero (int *** - ya que apunta a punteros dobles). La solución es la siguiente:
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;
}
}
}
También se puede utilizar este método para las matrices N-Dimensión con N-1 para los bucles. –
tal vez mencionan la funcionalidad de eliminación correspondiente, así .. – stijn
@Manish Shukla En el código de matriz de 3D, que de X, Y, y Z representa anchura, altura y profundidad ?? – Mariya