emplace_back()
โดยทั่วไปแล้วใน C ++ 11 เป็นที่ต้องการ (ในแง่ของประสิทธิภาพ) 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));
หรือการย้ายที่นี่ซ้ำซ้อนทั้งหมดหรือไม่มีผล?
myvector.emplace_back(mystring);
คัดลอกและไม่ย้าย อีกสองท่าและควรจะเทียบเท่า