ホームページ > バックエンド開発 > C++ > C で 2 番目の要素に基づいてペアのベクトルを並べ替えるにはどうすればよいですか?

C で 2 番目の要素に基づいてペアのベクトルを並べ替えるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-10 21:48:14
オリジナル
557 人が閲覧しました

How to Sort Vectors of Pairs Based on Their Second Elements in C  ?

2 番目の要素に基づいてペアのベクトルを並べ替える

ペアのベクトルが与えられた場合、それらをその要素に基づいて昇順に並べることができます。 2番目の要素。カスタム関数オブジェクトを構築することでこのタスクを実行できますが、標準テンプレート ライブラリ (STL) によってさらに便利なメソッドが提供されるかどうかを調べてみましょう。

カスタム コンパレータの使用

3 番目std::sort のパラメータを使用すると、カスタム コンパレータ関数を指定できます。次のように定義できます:

struct sort_pred {
    bool operator()(const std::pair<int, int>& left, const std::pair<int, int>& right) {
        return left.second < right.second;
    }
};

std::sort(v.begin(), v.end(), sort_pred());
ログイン後にコピー

C 11 以降でのラムダの使用

C 11 以降のバージョンでは、ラムダはコンパクトな代替手段を提供します。

std::sort(v.begin(), v.end(), [](const std::pair<int, int>& left, const std::pair<int, int>& right) {
    return left.second < right.second;
});
ログイン後にコピー

テンプレートの活用柔軟性

再利用性を高めるために、テンプレートベースのコンパレーターを定義できます:

template <class T1, class T2, class Pred = std::less<T2>>
struct sort_pair_second {
    bool operator()(const std::pair<T1, T2>& left, const std::pair<T1, T2>& right) {
        Pred p;
        return p(left.second, right.second);
    }
};
ログイン後にコピー

これにより、さらに優れた柔軟性が可能になります:

std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
ログイン後にコピー

以上がC で 2 番目の要素に基づいてペアのベクトルを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート