我想知道当我不在移动构造函数/移动任务中时,是否有必要显式移动值。比方说,我有以下情况:我应该移动一个我不再使用的值吗?
struct Node
{
std::vector<int> items;
};
Node create()
{
std::vector<int> items;
items.push_back(2);
Node n;
// should I use n.items = std::move(items);
// instead?
n.items = items;
// other code, not using items any more
return n;
}
首先,是正确的移动使用std::move
左值的前提是我没有在随后的代码中使用移动价值了吗?
其次,显式移动值是否更快,或者编译器是否自动检测到该值可以移动?
移动比复制更好 – vu1p3n0x
为什么不提前实例化'n'并通过直接推入'n.items'节省自己的麻烦? – user4581301
@ user4581301是正确的。你能想出一个非检索的例子吗? –