单独移动数组(raw array, std::array, std::vector)的每个元素

C++11 - Move each element of an array (raw array, std::array, std::vector) individually?

本文关键字:array std 元素 vector 数组 单独 移动 raw      更新时间:2023-10-16

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::向量

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

单独吗?

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

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

下面是三个代码片段的实际示例。

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