11 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
14 return m_data.begin();
17 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
20 return m_data.begin() + N;
23 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
26 return m_data.begin();
29 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
32 return m_data.begin() + N;
36 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
42 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
45 const int h = HashFunctor::hash(_value);
48 for (
int i = 0; i < N; ++i)
50 _searchedIdx = (h + i) % N;
51 const T& slot = m_data[_searchedIdx];
58 if (slot == _value + OFFSET)
69 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
72 PONCA_ASSERT_MSG(_value != -OFFSET,
"Illegal value was inserted into the HashSet");
74 if (search(_value, availableIdx))
75 return std::make_pair(m_data.begin() + availableIdx,
80 if (availableIdx == -1)
82 return std::make_pair(end(),
false);
86 m_data[availableIdx] = _value + OFFSET;
87 return std::make_pair(m_data.begin() + availableIdx,
true);
90 template <
int N,
typename T,
template <
int,
typename>
typename HF, T OFFSET>
93 PONCA_DEBUG_ASSERT_MSG(_value != -OFFSET,
"Illegal value was searched from the HashSet");
95 return search(_value, i);
Self::iterator end()
The end of the internal array.
std::pair< typename Self::iterator, bool > insert(const T &_value)
Tries to insert a value in the HashSet.
bool contains(T _value) const
Tries to find a value in the HashSet.
Self::const_iterator cend() const
The end of the internal array.
Self::iterator begin()
The beginning of the internal array.
Self::const_iterator cbegin() const
The beginning of the internal array.
void clear()
Empty the array.
bool search(T _value, T &_searchedIdx) const
Search for a value in the HashSet.
void fill(ForwardIt first, ForwardIt last, const T &value)
Assigns the given value to all elements in the range [first, last).
This Source Code Form is subject to the terms of the Mozilla Public License, v.