In C ++ 11 emplace_back()
ist im allgemeinen bevorzugt (in Bezug auf der Effizienz) zu , push_back()
da es ermöglicht , in-Place - Konstruktion, aber das ist immer noch der Fall , bei der Verwendung push_back(std::move())
mit einem bereits aufgebauten Objekt?
Wird zum Beispiel emplace_back()
in Fällen wie den folgenden immer noch bevorzugt?
std::string mystring("hello world");
std::vector<std::string> myvector;
myvector.emplace_back(mystring);
myvector.push_back(std::move(mystring));
// (of course assuming we don't care about using the value of mystring after)
Gibt es im obigen Beispiel außerdem einen Vorteil, wenn Sie stattdessen Folgendes tun:
myvector.emplace_back(std::move(mystring));
oder ist der Umzug hierher völlig überflüssig oder hat er keine Auswirkungen?
myvector.emplace_back(mystring);
kopiert und bewegt sich nicht. Die anderen beiden Züge sollten gleich sein.