Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有人能解释一下复制功能是做什么的吗?_C++ - Fatal编程技术网

C++ 有人能解释一下复制功能是做什么的吗?

C++ 有人能解释一下复制功能是做什么的吗?,c++,C++,摘自: 有人能解释参数的更多细节吗?我已经看过C++的文档,但是仍然不理解它。 此代码使用复制功能将两个数组合并为一个动态数组。基本上这就是参数的含义: 您可以从源复制到目标 举个例子: copy( StartPositionSource, EndPositionSource, StartPositionTarget ) 假设arr1有2个元素,arr2有3个元素: copy(arr1, arr1 + size1, result); copy(arr2, arr2 + size2, resul

摘自:

有人能解释参数的更多细节吗?我已经看过C++的文档,但是仍然不理解它。
此代码使用复制功能将两个数组合并为一个动态数组。

基本上这就是参数的含义:

您可以从源复制到目标

举个例子:

copy( StartPositionSource, EndPositionSource, StartPositionTarget )
假设arr1有2个元素,arr2有3个元素:

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

result
指向的动态数组足够大,可以依次包含
arr1
arr2
。第一份
副本

result = [arr1[0], arr1[1], arr2[0], arr2[1], arr2[2]]
复制范围
[arr1,arr1+size1)
中的每个元素,从
结果指向的动态数组中的位置开始,即动态数组的第一个元素

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

copy(arr1, arr1 + size1, result);

“此代码使用复制函数将两个数组合并为一个动态数组。”听起来您已经理解了。您的问题是什么?您好,谢谢您的回答,我不了解函数中包含的参数。我建议您在纸上画出涉及的数组,尤其是
result
。然后使用箭头作为指针,尤其是
result+size1
。您也可以这样做复制(arr2,arr2+size2,复制(arr1,arr1+size1,结果))时也是如此;
因为
copy
返回刚复制的元素之后的位置。这有帮助吗?可能没有。您应该阅读有关内存动态分配的内容,在new运算符的帮助下,内存分配等于sizeof size1+size2,复制函数采用3个参数第一个基址,第二个位置地址在数组中,直到我们必须复制它的位置,第三个参数是应该在哪里复制它意味着结果数组中的位置地址。
result
不是数组。哎呀,你说得对,数组是动态分配的。更正:)谢谢!“数组是动态分配的。”没有类似于“动态分配数组”。如何定义堆分配的匿名数组(如
newint[size1+size2]
)?我并不是说
result
是一个数组。您的第一个注释仍然适用,
result
是一个指针,它保留堆分配的、大小为
size1+size2
的匿名数组的第一个元素的内存地址。
copy(arr1, arr1 + size1, result);
copy(arr2, arr2 + size2, result + size1);