我很困惑通过增加x坐标和y坐标来平均术语排序点结构是什么? 所以,例如,如果我们有
struct point
{
int x,y;
}
确定我们必须创建我们的排序功能
bool compare(const point &a,const point &b)
{
//here i think we have to use this comparison method
if(a.x!=b.x)
return (a.x>b.x);
else
return (a.y>b.y);
}
最后我们将
vector<point>points;
sort(points.begin(),points.end(),compare);
我感兴趣的是,如果我的比较方法是正确的,我的意思是通过增加x坐标排序,y坐标是我的比较方法的作用吗?
答案 0 :(得分:2)
如果左侧“小于”右侧,则C ++标准库中的所有sort
方法都假定您传递的比较方法返回true
。所以你的compare
方法可能基本上与你希望它做的相反。
另外,请考虑为您的struct编写一个operator <
方法 - 可以有效地用作隐式比较函数,并且只需要两个参数就可以调用sort
。
答案 1 :(得分:1)
这意味着您使用x坐标对点进行排序,如果x坐标相等,则使用y坐标。这样的事情(未经测试):
bool compare(const point &a,const point &b)
{
if (a.x < b.x)
{
return true;
}
else if (a.x > b.x)
{
return false;
}
else if (a.y < b.y)
{
return true;
}
return false;
}