int * result = new int[size1 + size2];
copy(arr1, arr1 + size1, result);
copy(arr2, arr2 + size2, result + size1);
来自:https://stackoverflow.com/a/12791344/6268615
有人可以解释该参数的更多细节吗?我已经看过C ++的文档,但仍然不了解。
此代码通过使用复制功能将两个数组合并为一个动态数组。
答案 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
指向的动态数组足够大,可以一个接一个地包含arr1
和arr2
。第一个copy
:
copy(arr1, arr1 + size1, result);
从[arr1, arr1 + size1)
所指向的动态数组中的位置(即动态数组的第一个元素)开始复制result
范围内的每个元素。
将arr1
复制到[result, result + size1)
后,您要从arr2
开始复制result + size1
。这可以通过以下方式实现:
copy(arr2, arr2 + size2, result + size1);