Heyho、ペア
のベクトルをソート私はペアのベクトルをソートについて質問があります:
std::vector<std::pair<double,Processor*>> baryProc;
このベクトルはすでにペアで埋めています。 今私はペアの内側に二重の値に基づいて、ベクトル内のペアをソートしたかった
例:
iは、ベクトル内の3つのペアを持っていると仮定します。ペア1は正面にあり、ペア3は最後にあります。 pair2が真ん中にあります:
pair1(1, proc1)
pair2(3, proc2)
pair3(2.5, proc3)
今、私は二重の値に基づいてペアを並べ替える必要があります。ベクター内の順序は次のとおりです。
pair1(1, proc1)
pair3(2.5, proc3)
pair2(3, proc2)
どうすればいいですか?私はかなり固執しています。 C++では、ヘルプ
+1 '.second'比較を' std :: pair'の通常のless-operatorから削除した良い例です。私はこれのためのファンクタ(インラインにする可能性が高い)を好むだろうが、機能的なソリューションは無限に働く。 – WhozCraig
この良い説明をありがとう。私は標準のコンパレータが正常に動作すると思います。二重の値がしばしば同じであれば、標準的なオパレーターのソートが正しいでしょうか? 例:(1、proc1)、(1、proc2)、(2、proc3)、(3、proc4)、(3、proc5)、... – user2633791
@ user2633791あなたが求めているのは、 [安定](http://en.wikipedia.org/wiki/Stable_sort#Stability)。並べ替えアルゴリズムは、同じ値を持つ2つの要素が、並べ替えの終わりに同じ順序で、最初と同じ順序で残っていれば安定しています。デフォルトソートアルゴリズムは安定していませんが、STLはあなたの目的に合った[安定ソート](http://www.cplusplus.com/reference/algorithm/stable_sort/)を提供しています。 – maditya