在 C++11 中, move 语义 等等,人们可能想知道实际上可以 move 什么。这方面的一个例子是数组。是否可以 move 原始数组的每个元素,
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]);
个人?
最佳答案
当然,假设 array1
和 array2
已使用示例中的一些数据正确初始化。当您以您描述的方式处理单个数组元素时,它完全与 move 单个变量时的过程相同。
Foo var1;
Foo var2;
var1 = std::move(var2);
Here's a live example of your three code snippets in action. .
显然, move 后源变量中“剩下”的内容取决于变量的类型,但只要您不需要从源变量中读取任何内容,就可以了。
关于C++11 - 单独 move 数组(原始数组、std::array、std::vector)的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15630815/