class quan //x,y两点间的权
{
public:
int dis;
int x;
int y;
void cal(int c1, int r1, int c2, int r2);
};
··································
vector<quan>w;
quan s;
for ( i=1;i<n;i++)
for ( j=i+1;j<=n;j++)
{
s.x=i;
s.y=j;
s.cal(p[i].col,p[i].row,p[j].col,p[j].row);
w.push_back(s);
}
m=w.size();
qsort(w,m,sizeof(quan),cmp); //对权值大小从小到大排序
其中CMP为
int cmp(quan x,quan y)
{
return x.dis<y.dis;
}
其中省略了其他代码
但是我用sort(w.begin(),w.end().cmp) 就是对的 所以其他部分没问题
提示错误是error C2664: 'qsort' : cannot convert parameter 1 from 'class std::vector<class quan,class std::allocator<class quan> >' to 'void *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
求高人指点~~
2、还有 为什么我在网上查的qsort的参数表列 是上面那种
书上的是(T&a,int first,ing last) 只要数组的地址和首元素下标 和 最后一个元素下标就可以
3、sort 排序是什么排序??
参考资料:http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/