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