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

¡Construyamos una clase DynamicArray que administre su propia memoria y crezca 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 administre un array de enteros de tamaño dinámico. Tu clase debe tener:
    • Miembros privados: un puntero al array de datos, el tamaño actual (número de elementos) y la capacidad (espacio asignado)
    • Un constructor que reciba una capacidad inicial, asigne el array en el montón e inicialice el tamaño en 0
    • Un destructor que libere la memoria asignada e imprima "DynamicArray destroyed"
    • Un método push(int value) que añada un elemento al array. Si el array está lleno, debe duplicar la capacidad asignando un array nuevo más grande, copiando los elementos existentes y liberando el array anterior
    • Un método get(size_t index) que devuelva el elemento en el índice indicado
    • 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 que se añadirán. Después, 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: cantidad de valores que se añadirán (entero)
  • Líneas siguientes: un valor entero por línea

Al cambiar el tamaño, tu array 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, garantizando 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() {
    // Lee la capacidad inicial
    int initialCapacity;
    cin >> initialCapacity;

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

    // TODO: Create a DynamicArray with the initial capacity

    // TODO: Lee numValues enteros y añade cada uno al array

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

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

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

    return 0;
}

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C++ online