Etwas in eine std::map einfügen ohne, dass der Copy-Ctor aufgerufen wird
-
Wie kann ich etwas in eine std::map einfügen, ohne dass der Copy-Ctor aufgerufen wird, wie es bei std::make_pair immer passiert.
Ist das überhaupt möglich ohne eine map aus zeigern zu machen?
-
Nein, es ist auf normalem Wege nicht möglich. Du mußt im Prinzip damit leben. Evtl. wird sich das mit C++2009 ändern, wenn es den Moveoperator (&&) geben wird. Damit soll sowas verhindert werden, aber ob auch die Container diesen Moveoperator spendiert bekommen, weiß ich nicht.
Ansonst schau dir das hier mal an:
http://www.boost.org/libs/ptr_container/doc/ptr_container.htmlOder das hier ist auch sowas, was genau dein Problem ist mit einer Lösung, die ich aber etwas kompliziert finde:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2268.pdf
-
Vielen Dank für die Hilfe, jetzt probier ich boost::ptr_map
mfg.
-
Hm.. Die insert Funktion von boost ist sehr schlecht. Deswegen hab ich mir das Dokument nochmal angesehen.
Klingt eigentlich ganz gut, nur wo krieg ich diese emplace Funktion her? Das versteh ich nicht ganz.mfg.