31#ifndef COMMON_STD_SET_H
32#define COMMON_STD_SET_H
34#include "common/array.h"
41template<
class T,
class Comparitor = Common::Less<T> >
44 static int ComparatorFn(
const T &a,
const T &b) {
45 return Comparitor().operator()(a, b) ? -1 : 0;
48 static bool CompareEq(
const T &a,
const T &b) {
49 return !ComparatorFn(a, b) && !ComparatorFn(b, a);
55 Entry(
const T &item) : _value(item) {
59 using iterator =
typename Common::SortedArray<T, const T &>::iterator;
65 set() :
Common::SortedArray<T, const T & >(ComparatorFn) {}
75 if (ComparatorFn(item, *mid))
77 else if (ComparatorFn(*mid, item))
113 if (first == this->
end())
116 while (
end != this->
end() && CompareEq(*first, *
end)) {
119 size_t erased = Common::distance(first,
end);
130 if (CompareEq(*it, item))
132 else if (!ComparatorFn(item, *it))
iterator end()
Definition: array.h:380
iterator erase(iterator pos)
Definition: array.h:329
T * iterator
Definition: array.h:54
iterator begin()
Definition: array.h:375
const T * const_iterator
Definition: array.h:55
void insert(const T &element)
Definition: array.h:572
iterator find(const T &item)
Definition: set.h:70
void erase(iterator item)
Definition: set.h:96
size_t erase(const T &item)
Definition: set.h:111
Entry insert(const T &item)
Definition: set.h:88
void erase(iterator first, iterator last)
Definition: set.h:103
set()
Definition: set.h:65
size_t count(const T item) const
Definition: set.h:127
Definition: algorithm.h:29