通过增加x和y坐标来增加排序点

时间:2012-08-30 20:40:59

标签: c++ sorting

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

2 个答案:

答案 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;
}