20 #include "containers.h" 23 BEGIN_NAMESPACE_CONTAINERS
29 using iterator =
typename std::vector<T>::iterator;
30 using const_iterator =
typename std::vector<T>::const_iterator;
36 void insert(
const T& element);
37 template<
class InputIt>
38 void insert(InputIt first, InputIt last);
39 void insert(std::initializer_list<T> elements);
42 bool contains(
const T& element)
const;
43 iterator find(
const T& element);
44 const_iterator find(
const T& element)
const;
46 T& operator[](std::size_t index);
47 const T& operator[](std::size_t index)
const;
48 std::size_t size()
const;
53 const_iterator begin()
const;
54 const_iterator end()
const;
58 bool operator<(const InsertionOrderedSet<T>& other)
const;
61 std::vector<T> elements;
67 for (
const auto& element : elements)
72 template <
class InputIt>
75 static_assert(std::is_same<
typename std::iterator_traits<InputIt>::value_type, T>::value,
76 "InsertionOrderedSet InputIt must be an iterator of type T");
77 for (
auto it = first; it != last; ++it)
84 if (!contains(element))
85 elements.emplace_back(element);
91 for (
const auto& element : elements)
101 template <
typename T>
104 return std::find(elements.begin(), elements.end(), element) != elements.end();
107 template <
typename T>
110 return std::find(elements.begin(), elements.end(), element);
113 template <
typename T>
116 return std::find(elements.begin(), elements.end(), element);
119 template <
typename T>
122 return elements[index];
125 template <
typename T>
128 return elements[index];
131 template <
typename T>
134 return elements.size();
137 template <
typename T>
140 return elements.empty();
143 template <
typename T>
146 return elements.begin();
149 template <
typename T>
152 return elements.end();
155 template <
typename T>
158 return elements.begin();
161 template <
typename T>
164 return elements.end();
167 template <
typename T>
170 return elements == other.elements;
173 template <
typename T>
176 return !(*
this == other);
179 template <
typename T>
182 return elements < other.elements;
185 END_NAMESPACE_CONTAINERS
Definition: insertion_ordered_set.h:26