在 C++11emplace_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));
或者这里的举动完全是多余的,还是没有效果?