![]() |
aGrUM 3.1.1
a C++ library for (probabilistic) graphical models
|
Unsafe Iterators for hashtables. More...
#include <agrum/base/core/hashTable.h>
Public Types | |
| using | iterator_category = std::forward_iterator_tag |
| types for STL compliance | |
| using | key_type = Key |
| types for STL compliance | |
| using | mapped_type = Val |
| types for STL compliance | |
| using | value_type = std::pair< const Key, Val > |
| types for STL compliance | |
| using | reference = value_type& |
| types for STL compliance | |
| using | const_reference = const value_type& |
| types for STL compliance | |
| using | pointer = value_type* |
| types for STL compliance | |
| using | const_pointer = const value_type* |
| types for STL compliance | |
| using | difference_type = std::ptrdiff_t |
| types for STL compliance | |
Public Member Functions | |
| mapped_type & | val () |
| Returns the mapped value pointed to by the iterator. | |
Constructors / Destructors | |
| HashTableIterator () noexcept | |
| Basic constructor: creates an iterator pointing to nothing. | |
| HashTableIterator (const HashTable< Key, Val > &tab) noexcept | |
| Constructor for an iterator pointing to the first element of a hashtable. | |
| HashTableIterator (const HashTable< Key, Val > &tab, Size ind_elt) | |
| Constructor for an iterator pointing to the nth element of a hashtable. | |
| HashTableIterator (const HashTableIterator< Key, Val > &from) noexcept | |
| Copy constructor. | |
| HashTableIterator (HashTableIterator< Key, Val > &&from) noexcept | |
| Move constructor. | |
| ~HashTableIterator () noexcept | |
| Class destructor. | |
Operators | |
| HashTableIterator< Key, Val > & | operator= (const HashTableIterator< Key, Val > &from) noexcept |
| Copy operator. | |
| HashTableIterator< Key, Val > & | operator= (HashTableIterator< Key, Val > &&from) noexcept |
| Move operator. | |
| HashTableIterator< Key, Val > & | operator++ () noexcept |
| Makes the iterator point to the next element in the hash table. | |
| HashTableIterator< Key, Val > & | operator+= (Size i) noexcept |
| Makes the iterator point to i elements further in the hashtable. | |
| HashTableIterator< Key, Val > | operator+ (Size i) const noexcept |
| Returns a new iterator. | |
| bool | operator== (const HashTableIterator< Key, Val > &from) const noexcept |
| Checks whether two iterators are pointing toward equal elements. | |
| value_type & | operator* () |
| Returns the value pointed to by the iterator. | |
| const value_type & | operator* () const |
| Returns the value pointed to by the iterator. | |
Accessors / Modifiers | |
| const key_type & | key () const |
| Returns the key corresponding to the element pointed to by the iterator. | |
| const mapped_type & | val () const |
| Returns the mapped value pointed to by the iterator. | |
| void | clear () noexcept |
| Makes the iterator point toward nothing (in particular, it is not related anymore to its current hash table). | |
Operators | |
| bool | operator== (const HashTableConstIterator< Key, Val > &from) const noexcept |
| Checks whether two iterators are pointing toward equal elements. | |
Protected Member Functions | |
| HashTable< Key, Val >::Bucket * | _getBucket_ () const noexcept |
| Returns the current iterator's bucket. | |
| Size | _getIndex_ () const noexcept |
| Returns the index in the hashtable's node vector pointed to by the iterator. | |
Protected Attributes | |
| const HashTable< Key, Val > * | _table_ {nullptr} |
| The hash table the iterator is pointing to. | |
| Size | _index_ {Size(0)} |
| The index of the chained list pointed by the iterator in the array of nodes of the hash table. | |
| HashTable< Key, Val >::Bucket * | _bucket_ {nullptr} |
| The bucket in the chained list pointed to by the iterator. | |
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 2465 of file hashTable.h.
| using HashTableIterator< Key, Val >::const_pointer = const value_type* |
types for STL compliance
Definition at line 2476 of file hashTable.h.
| using HashTableIterator< Key, Val >::const_reference = const value_type& |
types for STL compliance
Definition at line 2474 of file hashTable.h.
| using HashTableIterator< Key, Val >::difference_type = std::ptrdiff_t |
types for STL compliance
Definition at line 2477 of file hashTable.h.
| using HashTableIterator< Key, Val >::iterator_category = std::forward_iterator_tag |
types for STL compliance
Definition at line 2469 of file hashTable.h.
| using HashTableIterator< Key, Val >::key_type = Key |
types for STL compliance
Definition at line 2470 of file hashTable.h.
| using HashTableIterator< Key, Val >::mapped_type = Val |
types for STL compliance
Definition at line 2471 of file hashTable.h.
| using HashTableIterator< Key, Val >::pointer = value_type* |
types for STL compliance
Definition at line 2475 of file hashTable.h.
| using HashTableIterator< Key, Val >::reference = value_type& |
types for STL compliance
Definition at line 2473 of file hashTable.h.
| using HashTableIterator< Key, Val >::value_type = std::pair< const Key, Val > |
types for STL compliance
Definition at line 2472 of file hashTable.h.
|
explicitnoexcept |
Basic constructor: creates an iterator pointing to nothing.
Definition at line 1917 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::HashTableConstIterator(), and HashTableIterator().
Referenced by HashTableIterator(), HashTableIterator(), HashTableIterator(), HashTableIterator(), HashTableIterator(), ~HashTableIterator(), operator+(), operator++(), operator+=(), operator=(), operator=(), and operator==().
|
explicitnoexcept |
Constructor for an iterator pointing to the first element of a hashtable.
| tab | The gum::HashTable to iterate over. |
Definition at line 1923 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::HashTableConstIterator(), HashTableIterator(), and HashTableConstIterator< Key, Val >::HashTable< Key, Val >.
| HashTableIterator< Key, Val >::HashTableIterator | ( | const HashTable< Key, Val > & | 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.
| 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. |
Definition at line 1929 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::HashTableConstIterator(), HashTableIterator(), and HashTableConstIterator< Key, Val >::HashTable< Key, Val >.
|
noexcept |
Copy constructor.
| from | The gum::HashTableIterator to copy. |
Definition at line 1935 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::HashTableConstIterator(), and HashTableIterator().
|
noexcept |
Move constructor.
| from | The gum::HashTableIterator to move. |
Definition at line 1942 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::HashTableConstIterator(), and HashTableIterator().
|
noexcept |
Class destructor.
Definition at line 1948 of file hashTable_tpl.h.
References HashTableIterator().
|
nodiscardprotectednoexceptinherited |
Returns the current iterator's bucket.
Definition at line 1903 of file hashTable_tpl.h.
References _bucket_.
|
nodiscardprotectednoexceptinherited |
Returns the index in the hashtable's node vector pointed to by the iterator.
Definition at line 1908 of file hashTable_tpl.h.
References _index_.
|
noexceptinherited |
Makes the iterator point toward nothing (in particular, it is not related anymore to its current hash table).
Definition at line 1799 of file hashTable_tpl.h.
|
nodiscardinherited |
Returns the key corresponding to the element pointed to by the iterator.
Definition at line 1786 of file hashTable_tpl.h.
| HashTableIterator< Key, Val >::value_type & HashTableIterator< Key, Val >::operator* | ( | ) |
Returns the value pointed to by the iterator.
Definition at line 1998 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::operator*().
| const HashTableIterator< Key, Val >::value_type & HashTableIterator< Key, Val >::operator* | ( | ) | const |
Returns the value pointed to by the iterator.
Definition at line 2004 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::operator*().
|
noexcept |
Returns a new iterator.
| i | The number of increments. |
Definition at line 1985 of file hashTable_tpl.h.
References HashTableIterator().
|
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 1973 of file hashTable_tpl.h.
References HashTableIterator(), and HashTableConstIterator< Key, Val >::operator++().
|
noexcept |
Makes the iterator point to i elements further in the hashtable.
| i | The number of increments. |
Definition at line 1979 of file hashTable_tpl.h.
References HashTableIterator(), and HashTableConstIterator< Key, Val >::operator+=().
|
noexcept |
Copy operator.
| from | The gum::HashTableIterator to copy. |
Definition at line 1960 of file hashTable_tpl.h.
References HashTableIterator(), and HashTableConstIterator< Key, Val >::operator=().
|
noexcept |
Move operator.
| from | The gum::HashTableIterator to move. |
Definition at line 1967 of file hashTable_tpl.h.
References HashTableIterator(), and HashTableConstIterator< Key, Val >::operator=().
|
noexceptinherited |
Checks whether two iterators are pointing toward equal elements.
| from | The gum::HashTableConstIterator to test for equality. |
Definition at line 1889 of file hashTable_tpl.h.
Referenced by HashTableIterator< Key, Val >::operator==().
|
noexcept |
Checks whether two iterators are pointing toward equal elements.
| from | The gum::HashTableIterator to test for equality. |
Definition at line 1992 of file hashTable_tpl.h.
References HashTableIterator(), and HashTableConstIterator< Key, Val >::operator==().
|
nodiscardinherited |
Returns the mapped value pointed to by the iterator.
Definition at line 1793 of file hashTable_tpl.h.
| HashTableIterator< Key, Val >::mapped_type & HashTableIterator< Key, Val >::val | ( | ) |
Returns the mapped value pointed to by the iterator.
Definition at line 1953 of file hashTable_tpl.h.
References HashTableConstIterator< Key, Val >::_bucket_, and GUM_ERROR.
|
protectedinherited |
The bucket in the chained list pointed to by the iterator.
Definition at line 2396 of file hashTable.h.
Referenced by _getBucket_(), gum::HashTableConstIteratorSafe< const gum::DiscreteVariable *, Idx >::_getIndex_(), clear(), key(), operator*(), operator++(), operator+=(), operator=(), val(), and HashTableIterator< Key, Val >::val().
|
protectedinherited |
The index of the chained list pointed by the iterator in the array of nodes of the hash table.
Definition at line 2393 of file hashTable.h.
Referenced by _getIndex_(), clear(), operator+=(), and operator=().
|
protectedinherited |
The hash table the iterator is pointing to.
Definition at line 2387 of file hashTable.h.
Referenced by HashTableConstIterator(), HashTableConstIterator(), HashTableConstIterator(), clear(), gum::HashTable< const gum::DiscreteVariable *, Idx >::eraseByVal(), gum::HashTable< const gum::DiscreteVariable *, Idx >::key(), gum::HashTableConstIteratorSafe< const gum::DiscreteVariable *, Idx >::key(), operator+=(), and operator=().