c++でtr1 :: unordered_set型のセットの交差と結合を行う方法は? 私はそれについて多くの参照を見つけることができません。
参照とコードは高く評価されます。どうもありがとうございました。
更新: tr1::unordered_set は、交差、結合、差の関数を提供する必要があると推測しました..それがセットの基本的な操作であるためです。もちろん自分で関数を書くことはできますが、tr1から組み込み関数があるかどうかは疑問です。どうもありがとうございました。
それには大したことはありません-交差については、一方のすべての要素を調べて、それが他方にあることを確認するだけです. ユニオンの場合、両方の入力セットからすべてのアイテムを追加します。
例えば:
void us_isect(std::tr1::unordered_set<int> &out,
const std::tr1::unordered_set<int> &in1,
const std::tr1::unordered_set<int> &in2)
{
out.clear();
if (in2.size() < in1.size()) {
us_isect(out, in2, in1);
return;
}
for (std::tr1::unordered_set<int>::const_iterator it = in1.begin(); it != in1.end(); it++)
{
if (in2.find(*it) != in2.end())
out.insert(*it);
}
}
void us_union(std::tr1::unordered_set<int> &out,
const std::tr1::unordered_set<int> &in1,
const std::tr1::unordered_set<int> &in2)
{
out.clear();
out.insert(in1.begin(), in1.end());
out.insert(in2.begin(), in2.end());
}