Myslalem ze moge sobie stworzyc tablice dynamiczna jedno elementowa i sobie ja zwiekszac o jeden przed dodaniem elementu.
Możesz.
Ale musiałbyś ręcznie realokować oraz kopiować bloki pamięci - trochę z tym byłoby roboty. Poczytaj o free
, memcpy
oraz ogólnie o wskaźnikach oraz operacjach na pamięci w C++ - to nie jest Pascal, gdzie wystarczy zrobić SetLength(Tablica, NowyRozmiar);
, a kompilator zaopiekuje się wszystkim.
Dlatego wymyślono std::vector
, które to wszystko robi za Ciebie (a nawet więcej).
Zatem wczesniejsze utworzenie 20elementowej tablicy gdzie wykorzystane jest tylko 1 miejsce byloby marnotrastwem.
Większość kontenerów działa na takiej zasadzie, czyli nie alokuje tyle danych ile jest wymagane, tylko zawsze i za każdym razem nieco więcej (np.1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096
i tak dalej). Dzięki temu unika się częstych i kosztownych operacji na pamięci.