C ++ 11 - 单独移动数组的每个元素(原始数组,std :: array,std :: vector)?

时间:2013-03-26 06:35:35

标签: c++ arrays vector element move

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

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

的std ::阵列

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]);

单独?

1 个答案:

答案 0 :(得分:3)

当然,假设array1array2已通过示例中的某些数据正确初始化。当您以所描述的方式处理单个数组元素时,它与移动单个变量完全相同

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

Here's a live example of your three code snippets in action.

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