使用移动赋值运算符分配刚构造的未命名值

时间:2014-04-10 18:48:48

标签: c++ c++11 move-semantics

我想分配刚构建的未命名(我的意思是"在没有声明的情况下创建#34;。如果不是正确的术语,请修复我。)容器使用移动赋值将大量元素添加到另一个容器中。

我应该这样写:

vector_used_before = std::move(vector<double>(100, 1.0));

或者简单地说:

vector_used_before = vector<double>(100, 1.0);
很明显,在这种情况下,编译器总是可以使用移动分配,因为我们不能再使用创建的对象了。但它是如何运作的?

1 个答案:

答案 0 :(得分:4)

vector<double>(100, 1.0)已经是一个右值,所以这两段代码完全相同 - 移动赋值。因此,正确的答案是“使用最短的答案”:

vector_used_before = vector<double>(100, 1.0);