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);
复制而不移动。另外两个是移动操作,应该是等价的。 - T.C.