Dalam C ++ 11 emplace_back()
umumnya lebih disukai (dalam hal efisiensi) push_back()
daripada karena memungkinkan konstruksi di tempat, tetapi apakah ini masih terjadi saat menggunakan push_back(std::move())
dengan objek yang sudah dibangun?
Misalnya, apakah emplace_back()
masih disukai dalam kasus seperti berikut ini?
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)
Selain itu, apakah ada manfaat dalam contoh di atas untuk melakukan:
myvector.emplace_back(std::move(mystring));
atau apakah perpindahan ke sini sepenuhnya mubazir, atau tidak berpengaruh?
myvector.emplace_back(mystring);
menyalin dan tidak bergerak. Dua gerakan lainnya dan harus setara.