diff --git a/misc/set_intersection.cc b/misc/set_intersection.cc new file mode 100644 index 0000000..cdeacb0 --- /dev/null +++ b/misc/set_intersection.cc @@ -0,0 +1,15 @@ +// Set intersection supporting std::unordered_set. +template +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); + } +} \ No newline at end of file