• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dynamiczna tablica obiektów

VPS Starter Arubacloud
+1 głos
549 wizyt
pytanie zadane 20 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,610 p.)
W jaki sposób utworzyć tablicę obiektów na dynamicznej tablicy?

1 odpowiedź

0 głosów
odpowiedź 20 kwietnia 2021 przez j23 Mędrzec (194,920 p.)
edycja 20 kwietnia 2021 przez j23
T* ptr = new T[ilosc];

// lub lepiej
std::vector<T> tab(ilosc);

 

komentarz 20 kwietnia 2021 przez tkz Nałogowiec (42,000 p.)
Nie lepiej użyć vecotra albo smart pointerów?
komentarz 20 kwietnia 2021 przez j23 Mędrzec (194,920 p.)

Lepiej, ale OP pytał o dynamiczną tablicę, więc założyłem, że chodzi mu o new[].

W sumie dopiszę vectora...

komentarz 20 kwietnia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
vectora, jeśli już, lub w zależności od wymagań innego kontenera, ale nie smart pointerów
komentarz 20 kwietnia 2021 przez tkz Nałogowiec (42,000 p.)
Ciekawe, a to dlaczego nie smart pointerów?
komentarz 20 kwietnia 2021 przez Dawidziu Bywalec (2,610 p.)

@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ć?

komentarz 20 kwietnia 2021 przez tkz Nałogowiec (42,000 p.)
#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. 

1
komentarz 21 kwietnia 2021 przez j23 Mędrzec (194,920 p.)

@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.

komentarz 21 kwietnia 2021 przez tkz Nałogowiec (42,000 p.)
W porównaniu do vectora - racja. Do new - uniqe_ptr wygrywa. Jednak model RAII pomaga przy nie popełnianiu głupich błędów.

Podobne pytania

0 głosów
2 odpowiedzi 1,305 wizyt
pytanie zadane 30 grudnia 2020 w C# przez j.cob_21 Początkujący (350 p.)
0 głosów
1 odpowiedź 537 wizyt
pytanie zadane 9 stycznia 2019 w C i C++ przez A$AP_Becari Nowicjusz (170 p.)
0 głosów
1 odpowiedź 724 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...