2016-05-14 9 views
0

C++ではSTL multiset<int, cmp>があります。私はカスタム比較演算子を定義しました。したがって、2つの異なる整数は引き続き等しいと見なすことができます。そのような場合、どうすればセット内の2つの整数の内部順序を同じにすることができますか?STLマルチセットで2つの等しい要素の順序を変更する

マルチセットに2番目の値を追加し、それに応じて値を希望の順序に設定するオプションについては読んでいますが、それはやや複雑なようです。より簡単な解決策がありますか? 2つの要素を特定の順序で消去して挿入しますか?

+5

'set'はユニークな要素しか取らない。 '1'と' 2'を挿入し、 'cmp'はそれらが等しいと言うなら、' 2'は挿入されません。たぶんあなたは 'multi_set'を探していますか? – nwp

+1

何の内部的な順序? 1つの集合に2つの等しい要素を持つことはできません。 –

+0

はい、そうです。マルチセットは、私が意味することです、ありがとう:) –

答えて

2

要素を並べ替える唯一の方法は、要素を削除して、再度挿入することです。

同じ要素をマルチセットに挿入するときは、追加された要素が既存の要素を継承します。または、要素が再挿入される場所を制御するヒントを受け取る関数を使用できます。

関連する問題