這一個是COMPAREX和compareY的qsort C++:用於調用 '的qsort'
struct Point
{
long long int x, y;
};
long long int compareX(const void* a, const void* b)
{
Point *p1 = (Point *)a, *p2 = (Point *)b;
return (* (long long int *)(p1->x - p2->x));
}
long long int compareY(const void* a, const void* b)
{
Point *p1 = (Point *)a, *p2 = (Point *)b;
return (* (long long int *)(p1->y - p2->y));
}
這是的qsort調用compareY
long long int stripClosest(Point strip[], long long int size, long long int
d)
{
long long int min = d;
qsort(strip, size, sizeof(Point), compareY);
for (long long int i = 0; i < size; ++i)
for (long long int j = i+1; j < size && (strip[j].y - strip[i].y) < min;
++j)
if (dist(strip[i],strip[j]) < min)
min = dist(strip[i], strip[j]);
return min;
}
沒有匹配的功能這是調用的qsort在COMPAREX
long long int closest(Point P[], long long int n)
{
qsort(P, n, sizeof(Point), compareX);
return closestUtil(P, n);
}
,我不知道爲什麼有人說「注:候選人功能並不可行:從「很久很久沒有已知的轉換( const void void )'to'int( _Nonnull)(const void *,const void *)'for'4th argument「and」error:no matching function for call to'qsort'「
如果我用很長很長整型int,而不是,它工作完全正常,我不知道爲什麼是用很長很長的int問題。 – truthprogrammer99
你爲什麼要輸出結果,x-y是一個指針? –
難道你不認爲問題可能是'int'和'long long int'是*不同類型*嗎? – molbdnilo