第一個問題,請原諒我的天真。qsort後識別物品/班級指針
我正在潛入C++的三角測量庫,它在運行三角測量方法之前對結構指針數組進行排序。我試圖跟蹤一個特定的結構指針(XYZ)在整個我的應用程序,根據鼠標位置更新。問題是,無論何時應用qsort方法,該指針都會改變。如何識別或跟蹤這個結構XYZ指針?
下面是結構&排序...
struct XYZ{
double x, y, z;
};
int XYZCompare(const void *v1, const void *v2){
XYZ *p1, *p2;
p1 = (XYZ*)v1;
p2 = (XYZ*)v2;
if(p1->x < p2->x)
return(-1);
else if(p1->x > p2->x)
return(1);
else
return(0);
}
XYZ結構的陣列(2這裏用於測試)與鼠標指針參考...
XYZ *allPointers = new XYZ[100];
allPointers[0].x = 100;
allPointers[0].y = 200;
allPointers[0].z = 0;
allPointers[1].x = 50;
allPointers[1].y = 80;
allPointers[1].z = 0;
XYZ *mousePointer = &allPointers[0];
排序和更新鼠標方法。
mousePointer->x = mouseX;
mousePointer->y = mouseY;
// If I don't qsort here the reference is fine, but I need to.
qsort(allPointers, 2, sizeof(XYZ), XYZCompare);
// triangulate, etc
如果你真的使用C++而不是'c',通常使用''而不是'qsort'中的'std :: sort'更好(即更快)。由於'std :: sort'是一個模板函數,它知道被排序的數組的數據類型,因此可以更高效地完成任務。 –