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 サイトの他の関連記事を参照してください。