T* ptr = new T[ilosc]; // lub lepiej std::vector<T> tab(ilosc);
Lepiej, ale OP pytał o dynamiczną tablicę, więc założyłem, że chodzi mu o new[].
W sumie dopiszę vectora...
@j23, dzięki za pomoc. Wiem, że to może głupie pytanie, ale jestem jeszcze początkującym koderem i mógłbyś mi wyjaśnić co jest tutaj obiektem i jak to wszystko wcześniej podefiniować?
#include <vector> #include <memory> class object { }; int main() { { object *ptr = new object[100]; delete[] ptr; } { auto objects = std::vector<object>(100); } { auto objects = std::make_unique<object[]>(100); } }
Warto zaznaczyć, że dwa ostatnie zrzucają z Twoich barków odpowiedzialność za czyszczenie pamięci.
@Dawidziu,
(...) co jest tutaj obiektem (...)?
Instancje klasy T, czyli elementy tablicy wskazywanej przez wskaźnik ptr.
Obiektem jest także tab, który zawiera w sobie obiekty klasy T.
Ciekawe, a to dlaczego nie smart pointerów?
Może dlatego, że taki smart pointer nie zawiera informacji o wielkości tablicy, co jest trochę niepraktyczne, zważywszy, że masz wektora, który oferuje o wiele więcej.
90,303 zapytań
138,899 odpowiedzi
311,089 komentarzy
60,019 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.