4

在具有所有移动语义等的C++11中,人们可能想知道实际上可以移动什么。这方面的一个例子是数组。是否可以移动原始数组的每个元素,

int array1[8];
int array2[8];
array1[0] = std::move(array2[0]);

标准::数组,

std::array<int, 8> array1;
std::array<int, 8> array2;
array1[0] = std::move(array2[0]);

和 std::vectors

std::vector<int> array1;
std::vector<int> array2;
array1[0] = std::move(array2[0]);

单独?

4

1 回答 1

3

当然,假设array1andarray2在您的示例中使用一些数据正确初始化。当您以您描述的方式处理单个数组元素时,它与移动单个变量时的过程完全相同。

Foo var1;
Foo var2;
var1 = std::move(var2);

这是您的三个代码片段的实际示例。.

显然,移动后源变量中“剩余”的内容取决于变量的类型,但只要您不需要从源变量中读取任何内容,就可以了。

于 2013-03-26T06:42:12.080 回答