gpt4 book ai didi

c++从重复数组创建子数组

转载 作者:行者123 更新时间:2023-11-30 04:24:32 30 4
gpt4 key购买 nike

这是我的代码,我不允许在子数组函数中使用循环我很困惑也许有人可以指出我正确的方向我觉得我快到了..

int *duplicateArray(int *arr, int size) 
{
int *newArray;

if (size<=0)
return NULL;

newArray = new int[size];

for (int index=0;index<size;index++)
newArray[index]=arr[index];

return newArray;
}

int* subArray(int *sub, int start, int length)
{

int aa[10]={1,2,3,4,5,6,7,8,9,10};
int *dup;
dup = aa;
duplicateArray(dup,10);
return dup;


}

int main()
{ cout << "Testing subArray: " << endl
<< "Expected result: 5, 6, 7, 8 " << endl;
int *subArr;
int start = 5;
subArr = subArray(subArr, 5,4);
for (int index = start; index<10; index++)
cout << subArr[index];
delete [] subArr;
subArr = 0;

最佳答案

因此,由于这是家庭作业,我将避免直接发布解决方案。你这么说;

im not allowed to use a loop in the subarray function

然而,目前,subArray 调用使用循环的 duplicateArray。这似乎与要求的精神相冲突。

既然你没有另外说明,我假设 subArray 应该复制它在 start 和 end 之间的参数内容.那么,我们知道什么?

我们知道返回数组的大小应该是length - start个元素。我们还知道(嗯,也许)存在一个名为 memcpy 的函数,它允许您将一个字节 block 从一个地方复制到另一个地方(假设它们不重叠)。

(请注意,我在这里建议使用 memcpy,因为我们正在处理 POD 类型(Plain Old Data),而且我怀疑您的类(class)是否深入研究了 STL。将来您会得到更好的服务通过像 std::copy() 这样的东西,但现在这是可以的)

因此,按顺序,我们需要:

  1. 声明一个新数组以返回 length - start 元素。 你必须动态分配这个数组!当前,您正在返回指向本地声明的数组的指针。一旦函数返回,该指针就会失效。

  2. sub + 复制 length - start 元素(元素,不是字节!确保考虑元素的数量以及单个元素的大小)开始进入这个新数组。

  3. 返回新数组(实际上是指针)。

如果我以某种方式违反了您的任务要求或意图,那么您需要为我详细说明您的问题。目前没有太多事情要做。

关于c++从重复数组创建子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12679404/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com