2種類のセットでstd :: set_intersectionを実行する方法はありますか?2種類のセットのset_intersection
私は2つのセットがあります:私はX1とX2が等しいかどうかをチェックする彼らのためにいくつかのコンパレータを定義することができるよ
std::set<X1> l_set1;
std::set<X2> l_set2;
を。
struct sample_comparer
{
bool operator()(const &X1 p_left, const &X2 p_right)
{
return p_left == p_right;
}
};
は今、私はそれらの二組の上に積集合を実行しよう:
std::set<X1> l_intersect;
std::set_intersection(l_set1.begin(), l_set1.end(), l_set2.begin(), l_set2.end(),
std::inserter(l_intersect, l_intersect.begin()), sample_comparer());
残念ながら、私はこのコードが動作するように強制することはできません。私はこれが可能かどうかも分かりませんが、set_intersectionのdescriptionから、私は2つの異なるイテレータを使用できることを知っています。
私が欲しいものを行うコードサンプルを検索しようとしましたが、何も見つかりませんでしたか?誰かが私の問題のための実用的なコードサンプルを私に提示できますか?
更新: エラーは、次のとおりです。事前に
error: stl_function.h:227: no match for 'operator<' in '__x < __y'
ありがとう!
"残念ながら、私はこのコードを動作させることはできません。"どのようなコンパイルエラーがありますか? –
あなたのサンプル比較者は正しいことをしません。それは、比較された要素に厳密な弱い順序を課すことよりも小さくする必要があります。 – tokage
オーバーロードされた<演算子 'bool演算子<(X1、X2)' –