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

标签 c++ arrays vector element move

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

个人?

最佳答案

当然,假设 array1array2 已使用示例中的一些数据正确初始化。当您以您描述的方式处理单个数组元素时,它完全与 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/

相关文章:

c++ - 如何使用 pthread_mutex_destroy 安全地销毁互斥锁

JAVA二十一点游戏。数组内的字符串?

javascript - 如何在不修改原始数组和创建副本的情况下替换数组元素?

Python for 循环只保存我的二维数组中的最后一个循环

返回项目 R 的唯一组合?

c++ - 使用指令和抽象方法

c++ - 用两个参数重载 operator bool 是什么意思?

c++ - 快速将 '0 1 1 0 1'格式的字符串转成bitset

c++ - 如何删除不断改变其大小的 vector 的一系列元素(C++)?

c++ - 如何保留指向插入集合然后插入 vector 的对象的指针?