У 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));
або переїзд сюди цілком зайвий, або не має жодного ефекту?
myvector.emplace_back(mystring);
копіює і не рухається. Інші два ходи повинні бути рівнозначними.