STL ソート関数によるリストのソート: 実装の問題
std::sort 関数を使用して構造体のリストをソートしようとする場合、演算子が欠落していることを示すコンパイル エラーが発生する可能性があります。このエラーは、提供されたコンパレータ SortDescending が、std::sort で必要なランダム アクセス イテレータではなく双方向イテレータをサポートする std::list の要素に対して動作するときに発生します。
この問題を解決するには、 std::sort では、特にリストを処理するように設計された std::list<>::sort メンバー関数を使用します。 std::list<>::sort:
Result.poly.sort(SortDescending());
を使用して変更されたコードは次のとおりです。std::list<>::sort メンバー関数にはコンパレータ関数も必要であることに注意してください。 SortDescending コンパレータは変更されません。
struct SortDescending { bool operator()(const term& t1, const term& t2) { return t2.pow < t1.pow; } };
SortDescending コンパレータで std::list<>::sort を利用すると、リストの 'pow' メンバーに基づいてリストを降順で正常に並べ替えることができます。 「用語」構造。
以上が`std::sort` が構造体の `std::list` をソートできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。