Add misc/set_intersection.cc
Signed-off-by: subcrip <contact@subc.rip>
This commit is contained in:
parent
ed523135db
commit
bd0cfba0fb
|
@ -0,0 +1,15 @@
|
||||||
|
// Set intersection supporting std::unordered_set.
|
||||||
|
template <typename Set, typename Key = typename Set::value_type>
|
||||||
|
static inline Set set_intersection(const Set& lhs, const Set& rhs) {
|
||||||
|
if (lhs.size() <= rhs.size()) {
|
||||||
|
Set iset;
|
||||||
|
for (const Key& key : lhs) {
|
||||||
|
if (rhs.count(key) > 0) {
|
||||||
|
iset.insert(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return std::move(iset);
|
||||||
|
} else {
|
||||||
|
return set_intersection(rhs, lhs);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue