Menu
Coddy logo textTech

Podsumowanie — menedżer tablicy dynamicznej

Część sekcji Programowanie obiektowe ścieżki C++ w Coddy. Lekcja 17 z 104.

challenge icon

Wyzwanie

Łatwy

Zbudujmy klasę DynamicArray, która zarządza własną pamięcią i automatycznie zwiększa swój rozmiar w razie potrzeby, tak jak działa pod spodem std::vector!

Utworzysz dwa pliki, aby uporządkować swój kod:

  • DynamicArray.h: Zdefiniuj klasę DynamicArray, która zarządza dynamicznie zmieniającą rozmiar tablicą liczb całkowitych. Twoja klasa powinna mieć:
    • Prywatne składowe: wskaźnik do tablicy danych, bieżący rozmiar (liczba elementów) oraz pojemność (przydzielona przestrzeń)
    • Konstruktor, który przyjmuje początkową pojemność, przydziela tablicę na stercie i inicjalizuje rozmiar wartością 0
    • Destruktor, który zwalnia przydzieloną pamięć i wypisuje "DynamicArray destroyed"
    • Metodę push(int value), która dodaje element do tablicy. Jeśli tablica jest pełna, powinna podwoić pojemność, przydzielając nową, większą tablicę, kopiując istniejące elementy i zwalniając starą tablicę
    • Metodę get(size_t index), która zwraca element o podanym indeksie
    • Metodę getSize(), która zwraca bieżącą liczbę elementów
    • Metodę getCapacity(), która zwraca bieżącą pojemność
  • main.cpp: Wczytaj początkową pojemność i liczbę wartości do dodania. Następnie wczytaj tę liczbę wartości całkowitych i dodaj każdą z nich do swojej klasy DynamicArray. Po dodaniu wszystkich wartości wypisz:
    • "Size: <size>"
    • "Capacity: <capacity>"
    • "Elements: <e1> <e2> ..." (wszystkie elementy oddzielone spacjami)

Format danych wejściowych:

  • Pierwszy wiersz: początkowa pojemność (liczba całkowita)
  • Drugi wiersz: liczba wartości do dodania (liczba całkowita)
  • Kolejne wiersze: po jednej wartości całkowitej w każdym wierszu

Podczas zmiany rozmiaru tablica powinna podwajać swoją pojemność. Na przykład, jeśli zaczniesz od pojemności 2 i dodasz trzeci element, pojemność powinna wzrosnąć do 4. To pokazuje zasadę RAII. Twoja klasa pozyskuje pamięć w konstruktorze i zwalnia ją w destruktorze, zapewniając brak wycieków pamięci.

Dołącz plik nagłówkowy w main.cpp za pomocą #include "DynamicArray.h".

Spróbuj swoich sił

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

using namespace std;

int main() {
    // Wczytaj początkową pojemność
    int initialCapacity;
    cin >> initialCapacity;

    // Wczytaj liczbę wartości do dodania
    int numValues;
    cin >> numValues;

    // TODO: Utwórz DynamicArray o początkowej pojemności

    // TODO: Wczytaj numValues liczb całkowitych i dodaj każdą z nich do tablicy

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

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

    // TODO: Wypisz "Elements: <e1> <e2> ..." (wszystkie elementy oddzielone spacjami)

    return 0;
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C++ online