![]() |
aGrUM
0.20.3
a C++ library for (probabilistic) graphical models
|
Unsafe Iterators for hashtablesHashTableIterator provides a fast but unsafe way to parse HashTables. More...
#include <agrum/tools/core/hashTable.h>
Public Member Functions | |
mapped_type & | val () |
Returns the mapped value pointed to by the iterator. More... | |
template<typename Alloc > | |
INLINE | HashTableIterator (const HashTable< Key, Val, Alloc > &tab) noexcept |
template<typename Alloc > | |
INLINE | HashTableIterator (const HashTable< Key, Val, Alloc > &tab, Size ind_elt) |
Constructors / Destructors | |
HashTableIterator () noexcept | |
Basic constructor: creates an iterator pointing to nothing. More... | |
template<typename Alloc > | |
HashTableIterator (const HashTable< Key, Val, Alloc > &tab) noexcept | |
Constructor for an iterator pointing to the first element of a hashtable. More... | |
template<typename Alloc > | |
HashTableIterator (const HashTable< Key, Val, Alloc > &tab, Size ind_elt) | |
Constructor for an iterator pointing to the nth element of a hashtable. More... | |
HashTableIterator (const HashTableIterator< Key, Val > &from) noexcept | |
Copy constructor. More... | |
HashTableIterator (HashTableIterator< Key, Val > &&from) noexcept | |
Move constructor. More... | |
~HashTableIterator () noexcept | |
Class destructor. More... | |
Operators | |
HashTableIterator< Key, Val > & | operator= (const HashTableIterator< Key, Val > &from) noexcept |
Copy operator. More... | |
HashTableIterator< Key, Val > & | operator= (HashTableIterator< Key, Val > &&from) noexcept |
Move operator. More... | |
HashTableIterator< Key, Val > & | operator++ () noexcept |
Makes the iterator point to the next element in the hash table. More... | |
HashTableIterator< Key, Val > & | operator+= (Size i) noexcept |
Makes the iterator point to i elements further in the hashtable. More... | |
HashTableIterator< Key, Val > | operator+ (Size i) const noexcept |
Returns a new iterator. More... | |
bool | operator!= (const HashTableIterator< Key, Val > &from) const noexcept |
Checks whether two iterators are pointing toward different elements. More... | |
bool | operator== (const HashTableIterator< Key, Val > &from) const noexcept |
Checks whether two iterators are pointing toward equal elements. More... | |
value_type & | operator* () |
Returns the value pointed to by the iterator. More... | |
const value_type & | operator* () const |
Returns the value pointed to by the iterator. More... | |
Accessors / Modifiers | |
const key_type & | key () const |
Returns the key corresponding to the element pointed to by the iterator. More... | |
const mapped_type & | val () const |
Returns the mapped value pointed to by the iterator. More... | |
void | clear () noexcept |
Makes the iterator point toward nothing (in particular, it is not related anymore to its current hash table). More... | |
Operators | |
bool | operator!= (const HashTableConstIterator< Key, Val > &from) const noexcept |
Checks whether two iterators are pointing toward different elements. More... | |
bool | operator== (const HashTableConstIterator< Key, Val > &from) const noexcept |
Checks whether two iterators are pointing toward equal elements. More... | |
Public Types | |
using | iterator_category = std::forward_iterator_tag |
types for STL compliance More... | |
using | key_type = Key |
types for STL compliance More... | |
using | mapped_type = Val |
types for STL compliance More... | |
using | value_type = std::pair< const Key, Val > |
types for STL compliance More... | |
using | reference = value_type & |
types for STL compliance More... | |
using | const_reference = const value_type & |
types for STL compliance More... | |
using | pointer = value_type * |
types for STL compliance More... | |
using | const_pointer = const value_type * |
types for STL compliance More... | |
using | difference_type = std::ptrdiff_t |
types for STL compliance More... | |
Protected Attributes | |
const HashTable< Key, Val > * | _table_ {nullptr} |
The hash table the iterator is pointing to. More... | |
Size | _index_ {Size(0)} |
The index of the chained list pointed by the iterator in the array of nodes of the hash table. More... | |
HashTable< Key, Val >::Bucket * | _bucket_ {nullptr} |
The bucket in the chained list pointed to by the iterator. More... | |
Protected Member Functions | |
HashTable< Key, Val >::Bucket * | _getBucket_ () const noexcept |
Returns the current iterator's bucket. More... | |
Size | _getIndex_ () const noexcept |
Returns the index in the hashtable's node vector pointed to by the iterator. More... | |
Unsafe Iterators for hashtables
HashTableIterator provides a fast but unsafe way to parse HashTables.
They should only be used when parsing hashtables in which no element is removed from the hashtable. Removing an element where the iterator points to will mess the iterator as it will most certainly point to an unallocated memory. So, this kind of iterator should only be used when parsing "(key) constant" hash tables, e.g., when we wish to display the content of a hash table or when we wish to update the mapped values of some elements of the hash table without ever modifying their keys.
Developers may consider using HashTable<x,y>::iterator instead of HashTableIterator<x,y>.
Key | The gum::HashTable key. |
Val | The gum::HashTable Value. |
Definition at line 2723 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::const_pointer = const value_type* |
types for STL compliance
Definition at line 2734 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::const_reference = const value_type& |
types for STL compliance
Definition at line 2732 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::difference_type = std::ptrdiff_t |
types for STL compliance
Definition at line 2735 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::iterator_category = std::forward_iterator_tag |
types for STL compliance
Definition at line 2727 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::key_type = Key |
types for STL compliance
Definition at line 2728 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::mapped_type = Val |
types for STL compliance
Definition at line 2729 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::pointer = value_type* |
types for STL compliance
Definition at line 2733 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::reference = value_type& |
types for STL compliance
Definition at line 2731 of file hashTable.h.
using gum::HashTableIterator< Key, Val >::value_type = std::pair< const Key, Val > |
types for STL compliance
Definition at line 2730 of file hashTable.h.
|
noexcept |
Basic constructor: creates an iterator pointing to nothing.
Definition at line 2108 of file hashTable_tpl.h.
|
noexcept |
Constructor for an iterator pointing to the first element of a hashtable.
Alloc | The gum::HashTable allocator. |
tab | The gum::HashTable to iterate over. |
gum::HashTableIterator< Key, Val >::HashTableIterator | ( | const HashTable< Key, Val, Alloc > & | tab, |
Size | ind_elt | ||
) |
Constructor for an iterator pointing to the nth element of a hashtable.
The method runs in time linear to ind_elt.
Alloc | The gum::HashTable allocator. |
tab | The hash table to which the so-called element belongs. |
ind_elt | The position of the element in the hash table (0 means the first element). |
UndefinedIteratorValue | Raised if the element cannot be found. |
|
noexcept |
Copy constructor.
from | The gum::HashTableIterator to copy. |
Definition at line 2130 of file hashTable_tpl.h.
|
noexcept |
Move constructor.
from | The gum::HashTableIterator to move. |
Definition at line 2138 of file hashTable_tpl.h.
|
noexcept |
Class destructor.
Definition at line 2145 of file hashTable_tpl.h.
|
noexcept |
Definition at line 2115 of file hashTable_tpl.h.
INLINE gum::HashTableIterator< Key, Val >::HashTableIterator | ( | const HashTable< Key, Val, Alloc > & | tab, |
Size | ind_elt | ||
) |
Definition at line 2123 of file hashTable_tpl.h.
|
protectednoexceptinherited |
Returns the current iterator's bucket.
Definition at line 2094 of file hashTable_tpl.h.
|
protectednoexceptinherited |
Returns the index in the hashtable's node vector pointed to by the iterator.
Definition at line 2099 of file hashTable_tpl.h.
|
noexceptinherited |
Makes the iterator point toward nothing (in particular, it is not related anymore to its current hash table).
Definition at line 1979 of file hashTable_tpl.h.
|
inherited |
Returns the key corresponding to the element pointed to by the iterator.
Definition at line 1960 of file hashTable_tpl.h.
|
noexceptinherited |
Checks whether two iterators are pointing toward different elements.
from | The gum::HashTableConstIterator to test for inequality. |
Definition at line 2071 of file hashTable_tpl.h.
|
noexcept |
Checks whether two iterators are pointing toward different elements.
from | The gum::HashTableIterator to test for inequality. |
Definition at line 2194 of file hashTable_tpl.h.
INLINE HashTableIterator< Key, Val >::value_type & gum::HashTableIterator< Key, Val >::operator* | ( | ) |
Returns the value pointed to by the iterator.
Definition at line 2207 of file hashTable_tpl.h.
INLINE const HashTableIterator< Key, Val >::value_type & gum::HashTableIterator< Key, Val >::operator* | ( | ) | const |
Returns the value pointed to by the iterator.
Definition at line 2213 of file hashTable_tpl.h.
|
noexcept |
Returns a new iterator.
i | The number of increments. |
Definition at line 2187 of file hashTable_tpl.h.
|
noexcept |
Makes the iterator point to the next element in the hash table.
The above loop is guaranteed to parse the whole hash table as long as no element is added to or deleted from the hash table while being in the loop.
Definition at line 2173 of file hashTable_tpl.h.
|
noexcept |
Makes the iterator point to i elements further in the hashtable.
i | The number of increments. |
Definition at line 2180 of file hashTable_tpl.h.
|
noexcept |
Copy operator.
from | The gum::HashTableIterator to copy. |
Definition at line 2160 of file hashTable_tpl.h.
|
noexcept |
Move operator.
from | The gum::HashTableIterator to move. |
Definition at line 2167 of file hashTable_tpl.h.
|
noexceptinherited |
Checks whether two iterators are pointing toward equal elements.
from | The gum::HashTableConstIterator to test for equality. |
Definition at line 2077 of file hashTable_tpl.h.
|
noexcept |
Checks whether two iterators are pointing toward equal elements.
from | The gum::HashTableIterator to test for equality. |
Definition at line 2200 of file hashTable_tpl.h.
|
inherited |
Returns the mapped value pointed to by the iterator.
Definition at line 1970 of file hashTable_tpl.h.
INLINE HashTableIterator< Key, Val >::mapped_type & gum::HashTableIterator< Key, Val >::val | ( | ) |
Returns the mapped value pointed to by the iterator.
Definition at line 2150 of file hashTable_tpl.h.
|
protectedinherited |
The bucket in the chained list pointed to by the iterator.
Definition at line 2654 of file hashTable.h.
|
protectedinherited |
The index of the chained list pointed by the iterator in the array of nodes of the hash table.
Definition at line 2651 of file hashTable.h.
|
protectedinherited |
The hash table the iterator is pointing to.
Definition at line 2645 of file hashTable.h.