![](/img/trans.png)
[英]How do I allow my program to accept different inputs from the user in C++?
[英]How do i change my merge algorithm to accept different arguments in c++?
我编写的原始代码使用以下参数:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.