28 template<
typename key_type>
31 std::vector<key_type> set;
40 template <
class InputIterator>
41 SimplexSet(InputIterator first, InputIterator last) noexcept : set(first, last)
46 SimplexSet(std::initializer_list<key_type> il) noexcept : set(il)
64 set = std::move(ss.set);
70 std::swap(set, ss.set);
80 typename std::vector<key_type>::const_iterator begin()
const
85 typename std::vector<key_type>::const_iterator end()
const
90 unsigned int size()
const
92 return static_cast<unsigned int>(set.size());
95 const key_type& front()
const
97 assert(set.size() > 0);
101 const key_type& back()
const
103 assert(set.size() > 0);
107 key_type pop_back() {
108 key_type last = back();
113 const key_type& operator[](
unsigned int i)
const
119 bool contains(
const key_type& k)
const noexcept
121 return std::find(set.begin(), set.end(), k) != end();
124 int index(
const key_type& k)
const noexcept
126 for (
int i = 0; i < set.size(); i++) {
135 void push_front(
const key_type& k)
137 assert(!contains(k));
138 set.insert(set.begin(), k);
141 void push_back(
const key_type& k)
143 assert(!contains(k));
147 void swap(
unsigned int i = 0,
unsigned int j = 1)
151 std::swap(set[i], set[j]);
156 for (key_type k : ss) {
164 for (key_type k : ss.set) {
181 for (
auto &k : set) {
189 auto iter = std::find(begin(), end(), key);
198 template<
typename key_type>
201 if(A.size() == B.size())
218 template<
typename key_type>
228 template<
typename key_type>
231 return std::move(A += B);
237 template<
typename key_type>
240 return std::move(A) + B;
246 template<
typename key_type>
249 return std::move(B) + A;
255 template<
typename key_type>
265 template<
typename key_type>
268 return std::move(A -= B);
274 template<
typename key_type>
284 template<
typename key_type>
287 return std::move(A -= key);
293 template<
typename key_type>
303 template<
typename key_type>
307 return std::move(A) - C;
Definition: simplex_set.h:29
SimplexSet< key_type > operator+(const SimplexSet< key_type > &A, const SimplexSet< key_type > &B)
Definition: simplex_set.h:219
SimplexSet< key_type > operator&(const SimplexSet< key_type > &A, const SimplexSet< key_type > &B)
Definition: simplex_set.h:294
SimplexSet< key_type > operator-(const SimplexSet< key_type > &A, const SimplexSet< key_type > &B)
Definition: simplex_set.h:256