15 static_assert(std::is_unsigned<T>::value,
16 "sparse-set: requires unsigned indexes");
23 set_max_size(max_size);
30 template <
template <
typename Elt>
class Container,
31 typename = decltype(std::declval<Container<T>>().
size())>
36 set_max_size(cont.size());
37 for (
const auto& elt : cont)
42 void set_max_size(
size_t max_size)
44 sparse_.resize(max_size);
60 if (sparse_.size() <= e)
61 sparse_.resize(e + 1);
62 if (curr_ < dense_.size())
73 return e < sparse_.capacity()
75 && dense_[sparse_[e]] == e;
85 T last = dense_[curr_ - 1];
86 dense_[sparse_[e]] = last;
87 sparse_[last] = sparse_[e];
100 return dense_.begin();
105 return dense_.begin() + curr_;
110 return dense_.begin();
115 return dense_.begin() + curr_;
120 std::vector<T> dense_;
122 std::vector<T> sparse_;
127 template <
typename T>
ATTRIBUTE_PURE bool has(const boost::container::flat_set< Key, Compare, Allocator > &s, const Key &e)
Whether e is member of s.
Sparse Set implementation.
size_t size(const ExpSet &rs, const typename ExpSet::value_t &r)