-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 <メソッドを作成することも検討してください。これは、暗黙的な比較関数として効果的に使用でき、sort2 つの引数だけで呼び出すことができます。

于 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 に答える