Lassen Sie uns sagen, ich habe ein map<int, int>
:Ist emplace für grundlegende Typen es wert?
std::map<int, int> map;
map.emplace(1, 2);
map.insert({3, 4});
keinen Unterschied zwischen den beiden Anrufen da sein?
Im ersten Aufruf werden die beiden Ganzzahlen nach Wert in die emplace
-Funktion und dann wieder in den std::pair<int, int>
-Konstruktor kopiert. Im zweiten Aufruf werden die zwei Ganzzahlen durch den Wert in den std::pair<int, int>
-Konstruktor kopiert und dann als Mitglieder des ersten Paares wieder als Wert in das interne std::pair<int, int>
kopiert.
Ich verstehe die Vorteile von emplace für Typen wie std::string
, wo sie von Wert im zweiten Aufruf kopiert und den ganzen Weg in der ersten verschoben würden, aber gibt es einen Vorteil bei der Verwendung von emplace
in der beschriebenen Situation?