Menu
Coddy logo textTech

Resumen - Gestor de arrays dinámicos

Parte de la sección Programación Orientada a Objetos del Journey de C++ de Coddy — lección 17 de 104.

challenge icon

Desafío

Fácil

¡Vamos a construir una clase DynamicArray que gestione su propia memoria, creciendo automáticamente cuando sea necesario — tal como funciona std::vector internamente!

Crearás dos archivos para organizar tu código:

  • DynamicArray.h: Define una clase DynamicArray que gestione un arreglo de enteros de tamaño dinámico. Tu clase debe tener:
    • Miembros privados: un puntero al arreglo de datos, el tamaño actual (número de elementos) y la capacidad (espacio asignado)
    • Un constructor que reciba una capacidad inicial, asigne el arreglo en el heap e inicialice el tamaño a 0
    • Un destructor que libere la memoria asignada e imprima "DynamicArray destroyed"
    • Un método push(int value) que añada un elemento al arreglo. Si el arreglo está lleno, debe duplicar la capacidad asignando un nuevo arreglo más grande, copiando los elementos existentes y liberando el arreglo antiguo
    • Un método get(size_t index) que devuelva el elemento en el índice dado
    • Un método getSize() que devuelva el número actual de elementos
    • Un método getCapacity() que devuelva la capacidad actual
  • main.cpp: Lee una capacidad inicial y una cantidad de valores para añadir. Luego lee esa cantidad de valores enteros y añade cada uno a tu DynamicArray. Después de añadir todos los valores, imprime:
    • "Size: <size>"
    • "Capacity: <capacity>"
    • "Elements: <e1> <e2> ..." (todos los elementos separados por espacios)

El formato de entrada será:

  • Primera línea: capacidad inicial (entero)
  • Segunda línea: número de valores a añadir (entero)
  • Líneas siguientes: un valor entero por línea

Al redimensionar, tu arreglo debe duplicar su capacidad. Por ejemplo, si comienzas con una capacidad de 2 y añades un tercer elemento, la capacidad debe convertirse en 4. Esto demuestra el principio RAII — tu clase adquiere memoria en el constructor y la libera en el destructor, asegurando que no haya fugas de memoria.

Incluye tu archivo de cabecera en main.cpp usando #include "DynamicArray.h".

Pruébalo tú mismo

#include <iostream>
#include "DynamicArray.h"

using namespace std;

int main() {
    // Leer la capacidad inicial
    int initialCapacity;
    cin >> initialCapacity;

    // Leer el número de valores a añadir
    int numValues;
    cin >> numValues;

    // TODO: Crear un DynamicArray con la capacidad inicial

    // TODO: Leer numValues enteros y añadir cada uno al arreglo

    // TODO: Imprimir "Size: <size>"

    // TODO: Imprimir "Capacity: <capacity>"

    // TODO: Imprimir "Elements: <e1> <e2> ..." (todos los elementos separados por espacios)

    return 0;
}

Todas las lecciones de Programación Orientada a Objetos