Sollte ich die Verwendung von boost::ptr_vector<T> oder vector<boost::shared_ptr<T> >?

Ich brauche einen container von Zeigern. Würden Sie empfehlen boost::ptr_vector<T> oder std::vector<boost::shared_ptr<T> >? (Oder etwas anderes?)

Wenn das von Interesse ist, meine tatsächlichen Daten, die Struktur ist relativ kompliziert (siehe hier) und derzeit speichert Objekte, keine Zeiger, aber ich würde gerne, das zu ändern (mit Mauszeiger Container), um loszuwerden, unnötige kopieren:

typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
Woher kommt dieser unnötige kopieren auftreten?
Wenn Sie etwas einfügen in den Vektor oder die multimap von oben.
Wenn Sie einen container, speichert Zeiger, nur die Zeiger kopiert werden, wenn Sie Daten hinzufügen, wenn Sie Objekte speichern, die eigentlichen Objekte werden kopiert. Dies ist ein problem, wenn Sie den Umgang mit Objekten, die teuer sind, zu kopieren.

InformationsquelleAutor Frank | 2010-09-29

Schreibe einen Kommentar