[C con Clase] Matrices dinamicas
Steven Davidson
srd4121 en njit.edu
Lun Mayo 11 19:14:47 CEST 2009
Hola Kalith,
kalith kalith wrote:
> Hola..
>
> Mi duda es la siguiente como puedo crear una matriz dinamica, es decir
>
> si un arreglo lo creo
> int *pA;
> pA = new int[5]
>
> como puedo crear una matriz de caracteres donde pueda ir metiendo
> palabras de forma correcta segun me lo diga un ciclo
>
Existen dos métodos:
1. Crea un array dinámico de punteros, a modo de filas. Cada puntero
guardará la dirección de memoria de cada array dinámico, a modo de
columnas, que vas creando en un bucle. Por ejemplo,
// Tabla de enteros de 10 x 4
int **pTabla = new int*[10];
// Creamos las columnas para cada fila
for( int f=0; f<10; f++ )
pTabla[f] = new int[4];
Recuerda que debes liberar la memoria tantas veces como la has creado.
En el caso anterior, esto sería,
// Borramos cada fila
for( int f=0; f<10; f++ )
delete[] pTabla[f];
// Borramos todas las filas
delete[] pTabla;
2. Creamos un array dinámico de punteros, como un directorio o filas.
Ahora creamos todos los elementos de la tabla en una sola sentada.
Luego, vamos guardando el comienzo de cada fila en nuestro directorio.
Por ejemplo,
// Tabla de enteros de 10 x 4
int **pTabla = new int*[10];
// Creamos todo los elementos: 40
pTabla[0] = new int[10*4];
// Asignamos las filas al "directorio"
for( int f=1; f<10; f++ )
pTabla[f] = pTabla[f-1]+4;
Este método simplifica la liberación de la memoria. Esto sería,
// Borramos todos los elementos
delete[] pTabla[0];
// Borramos el "directorio"
delete[] pTabla;
> otra cosa cuando debo hacer uso del delete
>
Cuando ya no necesites esa memoria dinámica. A más tardar, justo antes
de terminar el programa; o sea, antes de terminar 'main()'.
Sugiero consultar el capítulo 17 de nuestro curso de C++ acerca de este
tema. Puedes ir directamente a:
http://c.conclase.net/curso/index.php?cap=017
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase