C++ 11では、インプレース構築が可能であるemplace_back()
ため、一般的に(効率の観点から)好まれますが、構築済みのオブジェクトを使用する場合はまだそうですか?push_back()
push_back(std::move())
たとえばemplace_back()
、次のような場合でも優先されますか?
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)
さらに、上記の例で代わりに次のことを行う利点はありますか?
myvector.emplace_back(std::move(mystring));
または、ここでの移動は完全に冗長であるか、効果がありませんか?