В С++ 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));
или это движение здесь полностью избыточно или не имеет эффекта?