| 148 | |
| 149 | template <class T, class Iterable> |
| 150 | HashSet<T> hashset_without(const HashSet<T> &h, const Iterable &to_erase) { |
| 151 | HashSet<T> ret; |
| 152 | for (const auto &E : h) { |
| 153 | if (!to_erase.has(E)) { |
| 154 | ret.insert(E); |
| 155 | } |
| 156 | } |
| 157 | return ret; |
| 158 | } |
| 159 | |
| 160 | template <class T, class Iterable> |
| 161 | bool has_all(const HashSet<T> &h, const Iterable &to_find) { |