2017-01-23 1 views
-3

私は2つのセット、Set1、Set2を持っています。両方ともペアのセットです(pair <int,int>)。C++のペアのセットのカスタムセットコンパレータ

は今セット1のために、私は

set1Comparator(pair p1, pair p2) 
{ 
     if(p1.first != p2.first) 
       return p1.first < p2.first; 
     else 
       return p1.second < p2.second; 
} 

のような比較器及びSET2のために、私は

set2Comparator(pair p1, pair p2) 
{ 
     if(p1.first != p2.first) 
       return p1.first > p2.first; 
     else 
       return p1.second > p2.second; 
} 

のようにコンパレータしてください、助けたい。欲しいです 参考に、私はC++のコンパレータでたくさんのリンクをチェックしましたが、のセットコンパレータを定義するのに役立つものはありませんでした(ペアのセットに対して1つのコンパレータを定義すれば、set1とset2は同じここで、set1とset2はペアになります)。

+0

std :: setのコンストラクタはパラメータとして比較関数をとります。http://en.cppreference.com/w/cpp/container/set/set –

+0

@Neilありがとうございました:) –

+0

そのような質問..私はC++のコンパレータ_に非常に多くのリンクをチェックしました。しかし、なぜドキュメントをチェックしていませんでしたか?特定のクラスが特定の機能をサポートしているかどうかを知りたければ、まずはあなたが行くところです。 –

答えて

1

あなたがSTDを宣言するたびに::あなたが

std::set< std::pair<foo,bar>, set1Comparator > myset1; 

のように、比較クラスを指定し、他のセットのためにすることができます設定します。そのような単純なよう

std::set< std::pair<foo,bar>, set2Comparator > myset2; 

:D

+0

ありがとう、私は知らなかった、私はそれを行うことができます。私は試してみましょうとあなたに知らせる:) –

関連する問題