std::map mit std::auto_ptr
-
Hallo mal wieder ^^
Da std::map (oder viel eher jeder std-Container) nicht mit einem std::auto_ptr funktioniert - wie löst ihr das dann, wenn ihr eine nicht feste Anzahl an Pointern in einem Array haben wollt?
Iststd::map <std::string, VeryBigObject>eine Alternative zustd::map <std::string, std::auto_ptr <VeryBigObject> >? Theoretisch könnte es so ja passieren, dass die komplette map irgendwann umkopiert werden muss und so alle Instanzen der Klasse auch umkopiert werden, oder ist das intern nur ein Pointer, der da kopiert wird?
Und gibt es vll irgend einen (mehr oder weniger sauberen Weg), obenstehendes doch zum Compilieren zu bekommen? ^^Danke schon mal

bb
-
ja, nennt sich boost::smart_ptr
-
boost::shared_ptr
oder
boost::ptr_map
-
Danke
Shared_ptr hat mich auch auf folgenden Artikel gebracht:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-134971.htmlund da habe ich gesehen, dass es im tr1 ja auch einen gibt - und im VS 2008 hab ich das ja auch
Oder hat boost::shared_ptrirgend nen vorteil ggnübertr1::shared_ptr?Also danke noch mal

bb
-
unskilled schrieb:
Danke
Shared_ptr hat mich auch auf folgenden Artikel gebracht:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-134971.htmlund da habe ich gesehen, dass es im tr1 ja auch einen gibt - und im VS 2008 hab ich das ja auch
Oder hat boost::shared_ptrirgend nen vorteil ggnübertr1::shared_ptr?Also danke noch mal

bb
Nein, du solltest tr1 immer vorziehen, wenn möglich. Den tr1::shared_ptr gibt es noch nicht so lange wie den boost::shared_ptr - welcher Vorlage für den tr1::shared_ptr war/ist.