16 template <
typename T,
typename Compare,
typename Alloc>
17 struct hash<set<T, Compare, Alloc>>
19 using type = set<T, Compare, Alloc>;
23 for (
const auto& s: ss)
33 template <
typename T,
typename Compare,
typename Alloc>
35 has(
const std::set<T, Compare, Alloc>& s,
const T& e)
39 template <
typename T,
typename Compare,
typename Alloc>
40 std::set<std::set<T, Compare, Alloc>>
44 template <
typename T,
typename Compare,
typename Alloc>
46 print(
const std::set<T, Compare, Alloc>&
set, std::ostream& o);
49 template <
typename Container>
50 bool subset(
const Container& set1,
const Container& set2)
std::set< std::set< T, Compare, Alloc > > intersection_closure(std::set< std::set< T, Compare, Alloc >> pset)
The set of all the intersections of the sets in pset.
bool has(const std::set< T, Compare, Alloc > &s, const T &e) ATTRIBUTE_PURE
Whether e is member of s.
set< T, Compare, Alloc > type
std::ostream & print(const std::set< T, Compare, Alloc > &set, std::ostream &o)
Print with a separator. Meant to help debugging.
bool subset(const Container &set1, const Container &set2) ATTRIBUTE_PURE
Whether set1 ⊆ set2.
void hash_combine(std::size_t &seed, const T &v)
size_t operator()(const type &ss) const