構造体のベクトルがあり、値の 1 つに従ってそれらを並べ替える方法について助けが必要です。これら 2 つの値が同じ場合は、別のパラメーターに従って並べ替えます。
これは他の質問と似ていますが、それだけではありません。
私が実装しようとしているのは、走査線ベースのポリゴン塗りつぶしアルゴリズムです。
アクティブ エッジ リストを作成しましたが、各構造体オブジェクトの x 値に基づいて並べ替える必要があります。x 値が同じ場合、各構造体オブジェクトの勾配の逆数に基づいて並べ替える必要があります。
以下は、通常の並べ替えのオーバーライド演算子 < を使用した構造体の定義です。
struct Bucket
{
// Fields of a bucket list
int ymax, x, dx, dy, sum;
// Override the < operator, used for sorting based on the x value
bool operator < (const Bucket& var) const
{
// Check if the x values are the same, if so
// sort based on the ivnerse of the slope (dx/dy)
/*if(x == var.x)
return (dx/dy) < (var.dx/var.dy);
else*/
return (x < var.x);
}
};
if then else ステートメントはコンパイルされるためコメントアウトしましたが、浮動小数点エラーが発生し、プログラムがクラッシュします。正確なエラーは次のとおりです。「浮動小数点例外 (コア ダンプ)」
また、各部門を (int) にキャストしようとしましたが、それもうまくいきませんでした。
私の質問:私が持っている方法と同様の並べ替えを行う方法はありますか、それとも独自の並べ替えメソッドを作成する必要があります。
独自のソート方法を作成する必要がある場合は、役立つ簡単な方法へのリンクまたは何かを提供してください。
ありがとう