【发布时间】:2015-01-07 18:10:28
【问题描述】:
在 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);复制并且不移动。其他两个动作应该是等价的。
标签: c++11 move-semantics push-back emplace