**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
Improve this question
我正在写一个并行归并排序算法,其中的merge函数有一个可选参数。我目前使用merge函数的方式表明我使用它的方式有错误,但我不知道是怎么回事。
我尝试使用不带可选参数的merge函数,它给了我一个错误:没有匹配的函数调用。
问题出在mergesort函数的最后一行。
void mergesort(int *a, int first, int last)
{
if (first != last){
int middle = (first + last) / 2;
int *x = &a[first];
int *y = &a[middle];
mergesort(&a[first], first, middle);
mergesort(&a[middle], middle + 1, last);
merge(&a[first], &a[middle], middle, last);
}
}
void merge(int *a, int *b, int lasta, int lastb, int *output = NULL)
{
if (output == NULL){
output = new int[lasta+lastb];
}
int i=0, j=lasta, k=0;
while (i < lasta && j < lastb){
if(a[i] < b[j])
output[k++] = a[i++];
else
output[k++] = b[j++];
}
for(i; i < lasta; i++)
output[k++] = a[i];
for(j; j < lastb; j++)
output[k++] = a[j];
for(int x = 0; x < lastb; x++){
cout << output[x] << " ";
}
cout << endl;
}
1条答案
按热度按时间oknwwptz1#
c++对使用前的声明非常挑剔和严格,由于
merge
不使用mergesort
,但mergesort
使用merge
,因此必须在mergesort
之前声明merge
。当然,也有前瞻性声明,如
或者正是用于此目的的典型头文件。