Die Effizienz von C++11 push_back() mit std::move versus emplace_back() für die bereits errichteten Objekte

In C++11 emplace_back() ist in der Regel bevorzugt (im Sinne von Effizienz) push_back() da es ermöglicht, in-place-Konstruktion, aber ist dies immer noch der Fall, wenn mit push_back(std::move()) mit einem bereits gebauten Objekt?

Beispielsweise ist emplace_back() noch bevorzugt in Fällen wie den folgenden?

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)

Darüber hinaus gibt es einen nutzen in dem obigen Beispiel statt so:

myvector.emplace_back(std::move(mystring));

oder ist der Schritt hier völlig überflüssig, oder hat das keine Auswirkungen?

InformationsquelleAutor der Frage Riot | 2014-11-11

Schreibe einen Kommentar