Wyobraź sobie, że class C
ma zmienną składową m_MyList
typu std::vector
, w której chcę przechowywać obiekty typu MyClass
. C
ma dwie funkcje, które dodają lub usuwają obiekty w m_MyList
. m_MyList
należy również udostępnić użytkownikom o wartości C
, ponieważ muszą oni przeczytać kolekcję obiektów o numerach MyClass
. Zewnętrzny czytnik kolekcji nie będzie miał możliwości zmiany kolekcji, dlatego obiekty MyClass
są własnością tylko C
.Czy powinienem używać std :: unique_ptr <T> w zmiennej std :: vector member w mojej klasie?
Teraz moje pytanie: W stylu C++ 11, jaki jest najlepszy T do przechowywania w wektorze? Możliwości wydają się być:
std::vector<MyClass>
std::vector<MyClass*>
std::vector<unique_ptr<MyClass>>
korzystającstd:move
pchnąćunique_ptr
dovector
Rozwiązanie "unique_ptr" tak naprawdę niczego nie kupuje, chyba że obiekty są nieoprawione. Wersja surowego wskaźnika jest wręcz szkodliwa. Po prostu przejdź do prostego rozwiązania. – jalf
Jak duży jest obiekt 'MyClass' i ile planujesz przechowywać? Czy będzie dużo pojedynczych wstawek? – RedX