-4

我很困惑通过增加 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 坐标进行排序是我的比较方法的作用吗?

4

2 回答 2

2

C++ 标准库中的所有sort方法都假定您传递的比较方法true在左侧“小于”右侧时返回。因此,您的compare方法可能会与您希望它做的基本相反。

另外,请考虑operator <为您的结构编写一个方法——该方法可以有效地用作隐式比较函数,并且您sort只能使用两个参数进行调用。

于 2012-08-30T20:44:11.913 回答
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;
}
于 2012-08-30T20:49:26.643 回答