将unique_ptr数组移动到另一个数组的正确方法

Vic*_*one 5 c++ stl c++11

我有一个包含在std :: unique_ptr中的数组,我想将内容移动到另一个相同类型的数组中.我需要编写一个循环来逐个移动元素,还是可以使用像std :: move这样的东西?

const int length = 10;
std::unique_ptr<int[]> data(new int[length]);
//Initialize 'data'
std::unique_ptr<int[]> newData(new int[length]);
//Fill 'newData' with the contents of 'data'
Run Code Online (Sandbox Code Playgroud)

编辑:此外,如果阵列大小不同怎么办?

Vic*_*one 4

给定目标数组定义为:

std::unique_ptr<int[]> destPtr(new int[destLength]);
Run Code Online (Sandbox Code Playgroud)

源数组定义为:

std::unique_ptr<int[]> srcPtr(new int[srcLength]);
Run Code Online (Sandbox Code Playgroud)

在保证的情况下srcLength <= destLength,您可以使用 std::move ,如下所示:

const auto &srcBegin = srcPtr.get();
std::move(srcBegin, std::next(srcBegin, srcLength), destPtr.get());
Run Code Online (Sandbox Code Playgroud)