-3

データ型がある場合vector<pair<int,int> >、ペアの最初の要素で並べ替え、最初の要素が等しい場合は 2 番目で並べ替えるには、どのような方法が受け入れられますか? たとえば、(1,10)、(3,3)、(7,13)、(7,16)、(8,1)、(8,2)、(15,2) などです。

4

2 に答える 2

9

pairデフォルトでは、最初の要素で比較し、次に 2 番目の要素で比較します。したがって、最初の要素が等しいときに順序を維持することを気にしない場合は、次のように使用できますstd::sort

std::sort(v.begin(), v.end());
于 2013-08-03T04:06:24.240 に答える
1

std::pair■ 比較演算子は辞書順でペアを比較します。まず最初の要素を比較し、次に最初の要素が等しい場合は 2 番目の要素を比較します。

std::vector<std::pair<int, int>>との使用例を次に示しstd::sortます。

std::sortその方法を使用するとstd::pair'sが使用operator <されます。これは、前述のように、辞書順でペアを比較します。

更新:これは 、最初の要素のみを比較するカスタム比較関数を使用した例std::stable_sortです。

を使用std::stable_sortすると、等しい要素の相対的な順序が保持されることが保証されます。つまり、 の最初の要素std::pairsが等しい場合でも、元の相対順序は保持されます。

于 2013-08-03T04:08:52.353 に答える