<分区>
我有一个结构 subPolygon
和一个指向该结构的指针 vector 。我试图在 vector 上使用 qsort
但比较器功能显示为不兼容。我究竟做错了什么?
int cmpFunc(const void *p, const void *q) {
struct subPolygon* p1 = *((struct subPolygon**)p);
struct subPolygon* p2 = *((struct subPolygon**)q);
int s1 = p1->size;
int s2 = p2->size;
if (s1-s2 < 0 ) return -1;
if (s1 == s2) return 0;
return 1;
}
这是 vector 的声明:
vector<subPolygon*> subPolygons;
qsort
调用:
qsort(&subPolygons[0], subPolygons.size(), sizeof(struct subPolygon*),cmpFunc);
编辑:
看来问题是一个额外的错误:
cmpFunc:非标准 synatx;使用 & 创建指向成员的指针 "
我的比较函数是一个类的成员。 Qsort 是从该类的成员调用的。使我的比较器函数静态化解决了这个问题。