gpt4 book ai didi

c++ - 我如何更改我的合并算法以接受 C++ 中的不同参数?

转载 作者:行者123 更新时间:2023-11-28 03:55:11 25 4
gpt4 key购买 nike

我写的原始代码使用了这些参数:

int m = 排序列表 1 的大小

int n = 排序列表 2 的大小

int A[] = 排序列表 1

int B[] = 排序列表 2

int C[] = 1 和 2 的合并列表

我被要求将此代码添加到使用这些不同参数的现有文件中:

IntVectorIt start1

IntVectorIt end1

IntVectorIt start2

IntVectorIt end2

IntVectorIt start3

这些变量在这里定义(n 是第一个排序数组的大小,m 是第二个排序数组的大小):

typedef vector<int> IntVector;

typedef IntVector::iterator IntVectorIt;

IntVector Vector1(n);
IntVectorIt start1,end1,it1;
start1 = Vector1.begin();
end1 = Vector1.end();

IntVector Vector2(m);
IntVectorIt start2,end2,it2;
start2 = Vector2.begin();
end2 = Vector2.end();

IntVector Vector3(n+m);
IntVectorIt start3,end3,it3;
start3 = Vector3.begin();
end3 = Vector3.end();

//--The variables for my version of merge
IntVector MyVector(n+m);
IntVectorIt mystart,myend,myit;
mystart = MyVector.begin();
myend = MyVector.end();

我的合并代码:

void mymerge(int m, int n, int A[], int B[], int C[])
{
int i, j, k = 0;

while (i < m && j < n)
{
if (A[i] <= B[j])
{
C[k] = A[i];
i++;
}

else
{
C[k] = B[j];
j++;
}

k++;
}

if (i < m)
{
for (int p = i; p < m; p++)
{
C[k] = A[p];
k++;
}
}

else
{
for (int p = j; p < n; p++)
{
C[k] = B[p];
k++;
}

}

}

如果有人能帮我弄清楚如何将这些迭代器作为参数,那将对我有很大帮助。提前谢谢你。

最佳答案

由于这听起来像是作业,所以我不会编写整个解决方案。但是,这里有一些关于迁移 mymerge 的建议:

将签名改为

void mymerge(
IntVectorIt aStart,
IntVectorIt aEnd,
IntVectorIt bStart,
IntVectorIt bEnd,
IntVectorIt cStart,
IntVectorIt cEnd
);

将运行索引更改为迭代器,例如

IntVectorIt i = aStart;

改变循环停止条件以使用迭代器,例如

i != aEnd

关于c++ - 我如何更改我的合并算法以接受 C++ 中的不同参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3886970/

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