25 #include "common/array.h" 33 template<
class T,
class Comparitor = Common::Less<T> >
36 static int ComparatorFn(
const T &a,
const T &b) {
37 return Comparitor().operator()(a, b) ? -1 : 0;
40 static bool CompareEq(
const T &a,
const T &b) {
41 return !ComparatorFn(a, b) && !ComparatorFn(b, a);
47 Entry(
const T &item) : _value(item) {
51 using iterator =
typename Common::SortedArray<T, const T &>::iterator;
66 iterator mid = begin + (Common::distance(begin, end) / 2);
67 if (ComparatorFn(item, *mid))
69 else if (ComparatorFn(*mid, item))
105 if (first == this->
end())
108 while (end != this->
end() && CompareEq(*first, *end)) {
111 size_t erased = Common::distance(first, end);
112 this->
erase(first, end);
122 if (CompareEq(*it, item))
124 else if (!ComparatorFn(item, *it))
iterator end()
Definition: array.h:339
iterator begin()
Definition: array.h:334
T * iterator
Definition: array.h:54
iterator find(const T &item)
Definition: set.h:62
const T * const_iterator
Definition: array.h:55
size_t erase(const T &item)
Definition: set.h:103
Entry insert(const T &item)
Definition: set.h:80
size_t count(const T item) const
Definition: set.h:119
void erase(iterator first, iterator last)
Definition: set.h:95
void insert(const T &element)
Definition: array.h:531
void erase(iterator item)
Definition: set.h:88
iterator erase(iterator pos)
Definition: array.h:288