ホームページ  >  記事  >  バックエンド開発  >  `std::sort` が構造体の `std::list` をソートできないのはなぜですか?

`std::sort` が構造体の `std::list` をソートできないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-10 22:00:03531ブラウズ

Why Does `std::sort` Fail to Sort a `std::list` of Structures?

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&amp; t1, const term&amp; t2)
    { 
        return t2.pow < t1.pow; 
    }
};

SortDescending コンパレータで std::list<>::sort を利用すると、リストの 'pow' メンバーに基づいてリストを降順で正常に並べ替えることができます。 「用語」構造。

以上が`std::sort` が構造体の `std::list` をソートできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。