[C con Clase] Arrays dinámicos
Steven Davidson
steven en conclase.net
Mie Mar 7 18:54:14 CET 2007
Hola Alejandro,
El pasado 2007-03-07 17:07:28, Alejandro escribió:
A> Hola, estoy empezando a ver el capítulo de arrays dinámicos de varias dimensiones a partir de punteros a punteros. Tengo una duda sobre los arrays de tres dimensiones. Bueno, en realidad, quería que me confirmarais si el código que he escrito está bien hecho y no tiene ningún fallo:
Veamos el código.
A> #include <iostream>
A> #define D1 100
A> #define D2 50
A> #define D3 25
Recomiendo definir constantes, en lugar de constantes simbólicas. O sea,
const int D1 = 100;
const int D2 = 50;
const int D3 = 25;
A> using namespace std;
A> int main()
A> {
A> int ***tabla, x, y;
A>
A> tabla = new int**[D1];
A> for(x = 0; x < D1; x++)tabla[x] = new int*[D2];
A> for(x = 0; x < D1; x++)for(y = 0; y < D2; y++)tabla[x][y] = new int[D3];
A>
Podrías haber combinado estos bucles bajo uno. Esto sería,
for( x = 0; x < D1; x++ )
{
tabla[x] = new int*[D2];
for( y = 0; y < D2; y++ )
tabla[x][y] = new int[D3];
}
A> tabla[10][10][10] = D2;
A> cout << tabla[10][10][10] << endl;
A>
A> for(x = 0; x < D1; x++)for(y = 0; y < D2; y++)delete[] tabla[x][y];
A> for(x = 0; x < D1; x++)delete[] tabla[x];
Aquí ocurre lo mismo que antes; podemos agrupar las sentencias:
for( x = 0; x < D1; x++ )
{
for( y = 0; y < D2; y++ )
delete[] tabla[x][y];
delete[] tabla[x];
}
A> delete[] tabla;
A> cin.get();
A> return 0;
A> }
Sí; todo es correcto.
Hasta pronto,
Steven
Más información sobre la lista de distribución Cconclase