Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/10/2014, 00:49
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: Como eliminar una clase de una array dinamica

Código C++:
Ver original
  1. int new_array_size = (array_size / 5) * 5 + 5; // El tamaño va a ir aumentando 5 en 5.

Si tu intención es aumentar el tamaño del array de 5 en 5 no es mas fácil hacer simplemente una suma??

Código C++:
Ver original
  1. array_size += 5; // El tamaño va a ir aumentando 5 en 5.

Y luego, en el algoritmo que incrementa el tamaño del arreglo estás trabajando el doble de lo necesario. Dado que tanto "array" como "new_array" son punteros dobles, es decir, la variable únicamente almacena una dirección de memoria, puedes copiar dicho valor de una variable a otra. No es necesario copiar dos veces la lista de elementos:

Código C++:
Ver original
  1. if (size + 1 > array_size)
  2. {
  3.   array_size += 5; // El tamaño va a ir aumentando 5 en 5.
  4.   Digit** new_array = new Digit*[array_size];
  5.  
  6.   // Copiar los elementos del viejo array al array nuevo.
  7.   for(int i = 0; i < size; i++)
  8.   {
  9.     new_array[i] = array[i];
  10.   }
  11.  
  12.   delete[] array; // Eliminar el antiguo array.
  13.  
  14.   array = new_array; // Se copia el array.
  15. }