Internally used base for iterator and const_iterator. More...
Public Types | |
using | iterator_category = std::forward_iterator_tag |
using | difference_type = this_type::difference_type |
using | table_type = typename std::conditional< Const, const this_type, this_type >::type |
The HashTable container type. More... | |
using | node_type = typename std::conditional< Const, const this_type::node_type, this_type::node_type >::type |
The node-type being addressed. More... | |
using | key_type = this_type::key_type |
The key type. More... | |
using | mapped_type = typename std::conditional< Const, const this_type::mapped_type, this_type::mapped_type >::type |
The object type being addressed. More... | |
Public Member Functions | |
bool | good () const noexcept |
True if iterator points to an entry. More... | |
bool | found () const noexcept |
True if iterator points to an entry - same as good() More... | |
const Key & | key () const |
The key associated with the iterator. More... | |
Ostream & | print (Ostream &os) const |
Write the (key, val) pair. More... | |
operator bool () const noexcept | |
True if iterator points to an entry. More... | |
template<bool Any> | |
bool | operator== (const Iterator< Any > &iter) const noexcept |
Compare hash-entry element pointers. More... | |
template<bool Any> | |
bool | operator!= (const Iterator< Any > &iter) const noexcept |
Protected Member Functions | |
constexpr | Iterator () noexcept |
Default construct (end iterator) More... | |
Iterator (table_type *tbl) | |
Construct from begin of hash-table. More... | |
Iterator (table_type *tbl, const Key &key) | |
Construct by finding key in hash table. More... | |
void | increment () |
Increment to the next position. More... | |
template<bool Any> | |
operator const Iterator< Any > & () const | |
Permit explicit cast to the other (const/non-const) iterator. More... | |
Protected Attributes | |
node_type * | entry_ |
The selected entry. More... | |
table_type * | container_ |
The hash-table container being iterated on. More... | |
label | index_ |
Index within the hash-table data. More... | |
Friends | |
class | HashTable |
Internally used base for iterator and const_iterator.
The iterator base for HashTable (internal use only).
Note: data and functions are protected, to allow reuse by iterator and prevent most external usage. iterator and const_iterator have the same size, allowing us to reinterpret_cast between them (if desired)
Definition at line 214 of file HashTable.H.
using iterator_category = std::forward_iterator_tag |
Definition at line 577 of file HashTable.H.
Definition at line 578 of file HashTable.H.
using table_type = typename std::conditional < Const, const this_type, this_type >::type |
The HashTable container type.
Definition at line 586 of file HashTable.H.
using node_type = typename std::conditional < Const, const this_type::node_type, this_type::node_type >::type |
The node-type being addressed.
Definition at line 594 of file HashTable.H.
using key_type = this_type::key_type |
The key type.
Definition at line 597 of file HashTable.H.
using mapped_type = typename std::conditional < Const, const this_type::mapped_type, this_type::mapped_type >::type |
The object type being addressed.
Definition at line 605 of file HashTable.H.
|
inlineconstexprprotectednoexcept |
Default construct (end iterator)
Definition at line 33 of file HashTableIterI.H.
|
inlineexplicitprotected |
Construct from begin of hash-table.
Definition at line 44 of file HashTableIterI.H.
|
protected |
Construct by finding key in hash table.
Definition at line 33 of file HashTableIter.C.
|
inlinenoexcept |
True if iterator points to an entry.
This can be used directly instead of comparing to end()
Definition at line 115 of file HashTableIterI.H.
|
inlinenoexcept |
True if iterator points to an entry - same as good()
Definition at line 124 of file HashTableIterI.H.
|
inline |
The key associated with the iterator.
Definition at line 132 of file HashTableIterI.H.
|
inline |
Write the (key, val) pair.
Definition at line 141 of file HashTableIterI.H.
True if iterator points to an entry.
This can be used directly instead of comparing to end()
Definition at line 156 of file HashTableIterI.H.
Compare hash-entry element pointers.
Independent of const/non-const access
Definition at line 166 of file HashTableIterI.H.
Definition at line 178 of file HashTableIterI.H.
|
inlineprotected |
Increment to the next position.
Definition at line 78 of file HashTableIterI.H.
Permit explicit cast to the other (const/non-const) iterator.
Definition at line 678 of file HashTable.H.
|
friend |
Definition at line 640 of file HashTable.H.
|
protected |
The selected entry.
MUST be the first member for easy comparison between iterators and to support reinterpret_cast from nullObject
Definition at line 647 of file HashTable.H.
Referenced by HashTable< T, Key, Hash >::Iterator< true >::operator!=(), and HashTable< T, Key, Hash >::Iterator< true >::operator==().
|
protected |
The hash-table container being iterated on.
Uses pointer for default copy/assignment
Definition at line 651 of file HashTable.H.
|
protected |
Index within the hash-table data.
A signed value, since iterator_erase() needs a negative value to mark the position.
Definition at line 656 of file HashTable.H.