我想分配刚构建的未命名(我的意思是"在没有声明的情况下创建#34;。如果不是正确的术语,请修复我。)容器使用移动赋值将大量元素添加到另一个容器中。
我应该这样写:
vector_used_before = std::move(vector<double>(100, 1.0));
或者简单地说:
vector_used_before = vector<double>(100, 1.0);
很明显,在这种情况下,编译器总是可以使用移动分配,因为我们不能再使用创建的对象了。但它是如何运作的?
答案 0 :(得分:4)
vector<double>(100, 1.0)
已经是一个右值,所以这两段代码完全相同 - 移动赋值。因此,正确的答案是“使用最短的答案”:
vector_used_before = vector<double>(100, 1.0);