最佳答案
在 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));
还是说这种做法完全是多余的,或者根本没有效果?