STL conforming hash table using contiguous lists rather than linked lists. More...
Classes | |
class | Iterator |
An STL iterator. More... | |
Public Types | |
typedef Iterator< T &, ListHashTable< T, Key, Hash > &> | iterator |
typedef Iterator< const T &, const ListHashTable< T, Key, Hash > &> | const_iterator |
typedef T | value_type |
Type of values the ListHashTable contains. More... | |
typedef T & | reference |
Type that can be used for storing into ListHashTable::value_type. More... | |
typedef const T & | const_reference |
Type that can be used for storing into constant. More... | |
typedef label | size_type |
The type that can represent the size of a ListHashTable. More... | |
Public Member Functions | |
ListHashTable (const label size=128) | |
Construct given initial table size. More... | |
ListHashTable (Istream &, const label size=128) | |
Construct from Istream. More... | |
ListHashTable (const ListHashTable< T, Key, Hash > &) | |
Copy constructor. More... | |
ListHashTable (ListHashTable< T, Key, Hash > &&) | |
Move constructor. More... | |
~ListHashTable () | |
Destructor. More... | |
label | size () const |
Return number of elements in table. More... | |
bool | empty () const |
Return true if the hash table is empty. More... | |
bool | found (const Key &key) const |
Return true if hashed entry is found in table. More... | |
iterator | find (const Key &key) |
Find and return an iterator set at the hashed entry. More... | |
const_iterator | find (const Key &key) const |
Find and return an const_iterator set at the hashed entry. More... | |
List< Key > | toc () const |
Return the table of contents. More... | |
Ostream & | printInfo (Ostream &) const |
Print information. More... | |
bool | insert (const Key &key, const T &newElmt) |
Insert a new hashed entry. More... | |
bool | set (const Key &, const T &newElmt) |
Assign a new hashed entry, overwriting existing entries. More... | |
bool | erase (const iterator &it) |
Erase an hashed entry specified by given iterator. More... | |
bool | erase (const Key &key) |
Erase an hashed entry specified by given key if in table. More... | |
void | resize (const label newSize) |
Resize the hash table for efficiency. More... | |
label | erase (const ListHashTable< T, Key, Hash > &) |
Remove entries in the given hash table from this hash table. More... | |
void | clear () |
Clear all entries from table. More... | |
void | clearStorage () |
Clear the table entries and the table itself. More... | |
void | transfer (ListHashTable< T, Key, Hash > &) |
Transfer the contents of the argument table into this table. More... | |
T & | operator[] (const Key &) |
Find and return an hashed entry. More... | |
const T & | operator[] (const Key &) const |
Find and return an hashed entry. More... | |
T & | operator() (const Key &) |
Find and return an hashed entry, create it null if not present. More... | |
void | operator= (const ListHashTable< T, Key, Hash > &) |
Assignment operator. More... | |
void | operator= (ListHashTable< T, Key, Hash > &&) |
Move assignment operator. More... | |
bool | operator== (const ListHashTable< T, Key, Hash > &) const |
Equality. Two hash tables are equal if all contents of first are. More... | |
bool | operator!= (const ListHashTable< T, Key, Hash > &) const |
The opposite of the equality operation. More... | |
iterator | begin () |
Iterator set to the beginning of the ListHashTable. More... | |
const iterator & | end () |
Iterator set to beyond the end of the ListHashTable. More... | |
const_iterator | cbegin () const |
const_iterator set to the beginning of the ListHashTable More... | |
const const_iterator & | cend () const |
const_iterator set to beyond the end of the ListHashTable More... | |
const_iterator | begin () const |
const_iterator set to the beginning of the ListHashTable More... | |
const const_iterator & | end () const |
const_iterator set to beyond the end of the ListHashTable More... | |
Public Member Functions inherited from ListHashTableCore | |
ListHashTableCore () | |
Construct null. More... | |
ClassName ("ListHashTable") | |
Define template name and debug. More... | |
Friends | |
class | Iterator< T &, ListHashTable< T, Key, Hash > &> |
class | Iterator< const T &, const ListHashTable< T, Key, Hash > &> |
Istream & | operator>> (Istream &, ListHashTable< T, Key, Hash > &) |
Ostream & | operator (Ostream &, const ListHashTable< T, Key, Hash > &) |
Additional Inherited Members | |
Static Public Member Functions inherited from ListHashTableCore | |
static label | canonicalSize (const label) |
Return a canonical (power-of-two) size. More... | |
STL conforming hash table using contiguous lists rather than linked lists.
Note: Is slower to insert than the standard HashTable, but should be more memory efficient and faster to access.
Definition at line 56 of file ListHashTable.H.
Definition at line 136 of file ListHashTable.H.
typedef Iterator< const T&, const ListHashTable<T, Key, Hash>& > const_iterator |
Definition at line 148 of file ListHashTable.H.
typedef T value_type |
Type of values the ListHashTable contains.
Definition at line 274 of file ListHashTable.H.
Type that can be used for storing into ListHashTable::value_type.
objects. This type is usually List::value_type&.
Definition at line 278 of file ListHashTable.H.
typedef const T& const_reference |
Type that can be used for storing into constant.
ListHashTable::value_type objects. This type is usually const ListHashTable::value_type&.
Definition at line 283 of file ListHashTable.H.
The type that can represent the size of a ListHashTable.
Definition at line 286 of file ListHashTable.H.
ListHashTable | ( | const label | size = 128 | ) |
Construct given initial table size.
Definition at line 62 of file ListHashTable.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
Referenced by ListHashTable< T, Key, Hash >::ListHashTable().
ListHashTable | ( | Istream & | is, |
const label | size = 128 |
||
) |
Construct from Istream.
Definition at line 34 of file ListHashTableIO.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, and Foam::operator>>().
ListHashTable | ( | const ListHashTable< T, Key, Hash > & | ht | ) |
Copy constructor.
Definition at line 82 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::ListHashTable().
ListHashTable | ( | ListHashTable< T, Key, Hash > && | ht | ) |
Move constructor.
Definition at line 97 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::transfer().
~ListHashTable | ( | ) |
Destructor.
Definition at line 115 of file ListHashTable.C.
|
inline |
Return number of elements in table.
Definition at line 42 of file ListHashTableI.H.
Referenced by ListHashTable< T, Key, Hash >::printInfo().
|
inline |
Return true if the hash table is empty.
Definition at line 49 of file ListHashTableI.H.
References ListHashTable< T, Key, Hash >::insert().
bool found | ( | const Key & | key | ) | const |
Return true if hashed entry is found in table.
Definition at line 122 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::find(), forAll, and InfoInFunction.
Referenced by ListHashTable< T, Key, Hash >::erase().
Foam::ListHashTable< T, Key, Hash >::iterator find | ( | const Key & | key | ) |
Find and return an iterator set at the hashed entry.
If not found iterator = end()
Definition at line 152 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::end(), forAll, and InfoInFunction.
Referenced by ListHashTable< T, Key, Hash >::erase(), ListHashTable< T, Key, Hash >::found(), and ListHashTable< T, Key, Hash >::operator==().
Foam::ListHashTable< T, Key, Hash >::const_iterator find | ( | const Key & | key | ) | const |
Find and return an const_iterator set at the hashed entry.
If not found iterator = end()
Definition at line 184 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::cend(), forAll, and InfoInFunction.
Foam::List< Key > toc | ( | ) | const |
Return the table of contents.
Definition at line 214 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::cbegin(), ListHashTable< T, Key, Hash >::cend(), forAll, InfoInFunction, List< T >::setSize(), List< T >::size(), and Foam::T().
Foam::Ostream & printInfo | ( | Ostream & | os | ) | const |
Print information.
Definition at line 61 of file ListHashTableIO.C.
References ListHashTable< T, Key, Hash >::begin(), ListHashTable< T, Key, Hash >::clear(), Foam::count(), ListHashTable< T, Key, Hash >::end(), Foam::endl(), Foam::exit(), IOstream::fatalCheck(), Foam::FatalIOError, FatalIOErrorInFunction, forAll, token::info(), ListHashTable< T, Key, Hash >::insert(), token::isLabel(), token::isPunctuation(), token::labelToken(), Foam::nl, Foam::operator>>(), token::pToken(), Istream::putBack(), Istream::readBeginList(), Istream::readEndList(), ListHashTable< T, Key, Hash >::resize(), s(), ListHashTable< T, Key, Hash >::size(), and T.
Insert a new hashed entry.
Definition at line 57 of file ListHashTableI.H.
Referenced by ListHashTable< T, Key, Hash >::empty(), ListHashTable< T, Key, Hash >::operator=(), ListHashTable< T, Key, Hash >::printInfo(), and ListHashTable< T, Key, Hash >::resize().
Assign a new hashed entry, overwriting existing entries.
Definition at line 68 of file ListHashTableI.H.
Erase an hashed entry specified by given iterator.
Definition at line 287 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::end(), InfoInFunction, List< T >::setSize(), and List< T >::size().
Referenced by ListHashTable< T, Key, Hash >::erase().
bool erase | ( | const Key & | key | ) |
Erase an hashed entry specified by given key if in table.
Definition at line 342 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::end(), ListHashTable< T, Key, Hash >::erase(), and ListHashTable< T, Key, Hash >::find().
void resize | ( | const label | newSize | ) |
Resize the hash table for efficiency.
Definition at line 380 of file ListHashTable.C.
References Foam::abort(), ListHashTableCore::canonicalSize(), ListHashTable< T, Key, Hash >::cbegin(), ListHashTable< T, Key, Hash >::cend(), Foam::FatalError, FatalErrorInFunction, InfoInFunction, ListHashTable< T, Key, Hash >::insert(), and ListHashTable< T, Key, Hash >::transfer().
Referenced by ListHashTable< T, Key, Hash >::clearStorage(), and ListHashTable< T, Key, Hash >::printInfo().
Foam::label erase | ( | const ListHashTable< T, Key, Hash > & | rhs | ) |
Remove entries in the given hash table from this hash table.
Return the number of elements removed
Definition at line 359 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::begin(), Foam::count(), ListHashTable< T, Key, Hash >::end(), ListHashTable< T, Key, Hash >::erase(), and ListHashTable< T, Key, Hash >::found().
void clear | ( | ) |
Clear all entries from table.
Definition at line 420 of file ListHashTable.C.
References forAll.
Referenced by ListHashTable< T, Key, Hash >::clearStorage(), ListHashTable< T, Key, Hash >::operator=(), ListHashTable< T, Key, Hash >::printInfo(), and ListHashTable< T, Key, Hash >::transfer().
void clearStorage | ( | ) |
Clear the table entries and the table itself.
Equivalent to clear() followed by resize(1)
Definition at line 433 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::clear(), ListHashTable< T, Key, Hash >::resize(), and ListHashTable< T, Key, Hash >::transfer().
void transfer | ( | ListHashTable< T, Key, Hash > & | ht | ) |
Transfer the contents of the argument table into this table.
and annul the argument table.
Definition at line 442 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::clear().
Referenced by ListHashTable< T, Key, Hash >::clearStorage(), ListHashTable< T, Key, Hash >::ListHashTable(), ListHashTable< T, Key, Hash >::operator=(), and ListHashTable< T, Key, Hash >::resize().
Find and return an hashed entry.
Definition at line 80 of file ListHashTableI.H.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, and T.
Find and return an hashed entry.
Definition at line 97 of file ListHashTableI.H.
References Foam::exit(), Foam::FatalError, and FatalErrorInFunction.
Find and return an hashed entry, create it null if not present.
Definition at line 115 of file ListHashTableI.H.
References Foam::vtkWriteOps::insert(), and T.
void operator= | ( | const ListHashTable< T, Key, Hash > & | rhs | ) |
Assignment operator.
Definition at line 469 of file ListHashTable.C.
References Foam::abort(), ListHashTable< T, Key, Hash >::cbegin(), ListHashTable< T, Key, Hash >::cend(), ListHashTable< T, Key, Hash >::clear(), Foam::FatalError, FatalErrorInFunction, and ListHashTable< T, Key, Hash >::insert().
void operator= | ( | ListHashTable< T, Key, Hash > && | rhs | ) |
Move assignment operator.
Definition at line 508 of file ListHashTable.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, and ListHashTable< T, Key, Hash >::transfer().
bool operator== | ( | const ListHashTable< T, Key, Hash > & | rhs | ) | const |
Equality. Two hash tables are equal if all contents of first are.
also in second and vice versa.
Definition at line 526 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::cbegin(), ListHashTable< T, Key, Hash >::cend(), and ListHashTable< T, Key, Hash >::find().
Referenced by ListHashTable< T, Key, Hash >::operator!=().
bool operator!= | ( | const ListHashTable< T, Key, Hash > & | rhs | ) | const |
The opposite of the equality operation.
Definition at line 548 of file ListHashTable.C.
References ListHashTable< T, Key, Hash >::operator==().
|
inline |
Iterator set to the beginning of the ListHashTable.
Definition at line 326 of file ListHashTableI.H.
References forAll, and Foam::Info.
Referenced by ListHashTable< T, Key, Hash >::erase(), and ListHashTable< T, Key, Hash >::printInfo().
|
inline |
Iterator set to beyond the end of the ListHashTable.
Definition at line 350 of file ListHashTableI.H.
Referenced by ListHashTable< T, Key, Hash >::erase(), ListHashTable< T, Key, Hash >::find(), and ListHashTable< T, Key, Hash >::printInfo().
|
inline |
const_iterator set to the beginning of the ListHashTable
Definition at line 358 of file ListHashTableI.H.
References forAll, and Foam::Info.
Referenced by ListHashTable< T, Key, Hash >::operator=(), ListHashTable< T, Key, Hash >::operator==(), ListHashTable< T, Key, Hash >::resize(), and ListHashTable< T, Key, Hash >::toc().
|
inline |
const_iterator set to beyond the end of the ListHashTable
Definition at line 382 of file ListHashTableI.H.
Referenced by ListHashTable< T, Key, Hash >::find(), ListHashTable< T, Key, Hash >::operator=(), ListHashTable< T, Key, Hash >::operator==(), ListHashTable< T, Key, Hash >::resize(), and ListHashTable< T, Key, Hash >::toc().
|
inline |
const_iterator set to the beginning of the ListHashTable
Definition at line 390 of file ListHashTableI.H.
|
inline |
const_iterator set to beyond the end of the ListHashTable
Definition at line 398 of file ListHashTableI.H.
|
friend |
Definition at line 157 of file ListHashTable.H.
|
friend |
Definition at line 163 of file ListHashTable.H.
|
friend |