有人可以解释复印功能做什么吗?

时间:2018-09-03 06:39:11

标签: c++

int * result = new int[size1 + size2];
copy(arr1, arr1 + size1, result);
copy(arr2, arr2 + size2, result + size1);

来自:https://stackoverflow.com/a/12791344/6268615

有人可以解释该参数的更多细节吗?我已经看过C ++的文档,但仍然不了解。

此代码通过使用复制功能将两个数组合并为一个动态数组。

2 个答案:

答案 0 :(得分:2)

基本上,这是copy的参数的含义:

copy( StartPositionSource, EndPositionSource, StartPositionTarget )

您从源复制到目标。

给出您的示例:

copy(arr1, arr1 + size1, result);
copy(arr2, arr2 + size2, result + size1);

并假设arr1有2个元素,而arr2有3个元素,您将得到:

result = [arr1[0], arr1[1], arr2[0], arr2[1], arr2[2]]

答案 1 :(得分:0)

result指向的动态数组足够大,可以一个接一个地包含arr1arr2。第一个copy

copy(arr1, arr1 + size1, result);

[arr1, arr1 + size1)所指向的动态数组中的位置(即动态数组的第一个元素)开始复制result范围内的每个元素。

arr1复制到[result, result + size1)后,您要从arr2开始复制result + size1。这可以通过以下方式实现:

copy(arr2, arr2 + size2, result + size1);