48class QMinimalFlatSet : QtPrivate::CompactStorage<Compare>
51 using CompareStorage = QtPrivate::CompactStorage<Compare>;
53 QMinimalFlatSet() =
default;
54 explicit QMinimalFlatSet(
const Compare &cmp) : CompareStorage{cmp} {}
57 using const_iterator =
typename Container::const_iterator;
58 using iterator = const_iterator;
59 using const_reverse_iterator =
typename Container::const_reverse_iterator;
60 using reverse_iterator = const_reverse_iterator;
62 using key_compare = Compare;
63 using value_compare = Compare;
65 key_compare key_comp()
const {
return this->object(); }
66 value_compare value_comp()
const {
return key_comp(); }
68 iterator begin()
const {
return c.cbegin(); }
69 iterator end()
const {
return c.cend(); }
70 iterator cbegin()
const {
return begin(); }
71 iterator cend()
const {
return cend(); }
73 reverse_iterator rbegin()
const {
return c.crbegin(); }
74 reverse_iterator rend()
const {
return c.crend(); }
75 reverse_iterator crbegin()
const {
return rbegin(); }
76 reverse_iterator crend()
const {
return rend(); }
82 auto size()
const {
return c.size(); }
83 auto count()
const {
return size(); }
84 bool isEmpty()
const {
return size() == 0; }
86 std::pair<iterator,
bool> insert(value_type &&v)
89 const auto r = lookup(v);
93 return {c.insert(r.it, std::move(v)),
true};
96 std::pair<iterator,
bool> insert(
const value_type &v)
99 const auto r = lookup(v);
101 return {r.it,
false};
103 return {c.insert(r.it, v),
true};
106 void erase(
const value_type &v)
109 const auto r = lookup(v);
113 void remove(
const value_type &v) { erase(v); }
115 bool contains(
const value_type &v)
const
117 return lookup(v).exists;
120 const Container &values()
const & {
return c; }
121 Container values() && {
return std::move(c); }
124 auto lookup(
const value_type &v)
const
131 auto cmp = std::ref(
this->object());
133 const auto it = std::lower_bound(c.cbegin(), c.cend(), v, cmp);
134 return R{it, it != c.cend() && !cmp(v, *it)};
137#ifdef QMINIMAL_FLAT_SET_DEBUG
138 friend QDebug operator<<(QDebug dbg,
const QMinimalFlatSet &set)
140 const QDebugStateSaver saver(dbg);
141 dbg.nospace() <<
"QMinimalFlatSet{";