Stellen Sie sich ein class C
, die eine Membervariable m_MyList
Typ hat std::vector
, in dem ich MyClass
Objekte vom Typ gespeichert werden sollen. C
verfügt über zwei Funktionen zum Hinzufügen oder Entfernen von Objekten in m_MyList
. m_MyList
sollte auch für die Verbraucher von C
zugänglich gemacht werden, da sie die Sammlung von MyClass
Objekte lesen müssen. Der externe Leser der Sammlung hat keine Möglichkeit, die Sammlung zu ändern, daher sind die MyClass
Objekte nur im Besitz von C
.Sollte ich std :: unique_ptr <T> in einer std :: vector Membervariable in meiner Klasse verwenden?
Jetzt meine Frage: In C++ 11 Stil, was ist die beste T in den Vektor zu speichern? Die Möglichkeiten scheinen zu sein:
std::vector<MyClass>
std::vector<MyClass*>
std::vector<unique_ptr<MyClass>>
,std:move
mit demunique_ptr
in dievector
Die 'unique_ptr'-Lösung kauft Ihnen wirklich nichts, es sei denn, die Objekte sind nicht kopierbar. Die rohe Zeigerversion ist ausgesprochen schädlich. Wählen Sie einfach die einfache Lösung – jalf
Wie groß ist ein Objekt "MyClass" und wie viele möchten Sie speichern? Wird es viele einzelne Insertionen geben? – RedX