Intelligenter Vector für Zeiger?
-
Hallo zusammen.
Gibt es einen "intelligenten" vektor, der Zeiger speichert und bei erase automatisch löscht?
Wäre schön, wenns den unter std:: gibt, meinetwegen auch in std::tr1::, oder zur not auch bei boost:: oder qt (ich glaube bei QVector gibts setAutoDelete, aber benutze gerade kein QT, std:: wäre schon am besten...).
In Stroustrups buch wurde was von nem vector_ref erwähnt, hab den aber nicht gefunden, ich glaube den hatte er selbst geschrieben.
-
-
thx!
std hat nix?

Oder wie wärs wenn man
std::vector<std::auto_ptr<T> > nimmt?
beim kopieren von auto_ptr wird ja der "Besitz" übertragen, also sollte das hinzufügen gehen, obwohl ich mal gelesen hab, dass es nicht geht.
Eine Begründung, waurm es nicht geht wäre nice
ansonsten sollte doch
std::vector<std::tr1::shared_ptr<T> > aber gehen, oder?
-
Ein auto_ptr kann soweit ich weiß nicht in einem Container gespeichert werden. Ein shared_ptr wäre übertrieben. Nimm nen unique_ptr.
-
Schau dir doch mal Boost an, diese Bibliothekssammlung enthält enorm viele nützliche Funktionalität. Boost ist vielen C++-Programmierern ein Begriff, ein Teil davon fliesst auch in zukünftige Standardbibliotheken ein.
auto_ptrgeht nicht mit STL-Containern undshared_ptrist meist Overkill, weil man gar nichts teilen will.unique_ptrist ab C++0x eine Möglichkeit, allerdings kannst du diesen Smart-Pointer nicht kopieren. Wenn du einfach nur besitzende Zeiger in Containern brauchst (z.B. für Polymorphie), nimm Boosts Pointer-Container.