![]() |
Plasma Engine
2.0
|
Implementation of a hashset. More...
#include <HashSet.h>

Classes | |
| class | ConstIterator |
| Const iterator. More... | |
Public Member Functions | |
| bool | operator== (const plHashSetBase< KeyType, Hasher > &rhs) const |
| Compares this table to another table. | |
| PL_ADD_DEFAULT_OPERATOR_NOTEQUAL (const plHashSetBase< KeyType, Hasher > &) | |
| void | Reserve (plUInt32 uiCapacity) |
| Expands the hashset by over-allocating the internal storage so that the load factor is lower or equal to 60% when inserting the given number of entries. | |
| void | Compact () |
| Tries to compact the hashset to avoid wasting memory. | |
| plUInt32 | GetCount () const |
| Returns the number of active entries in the table. | |
| bool | IsEmpty () const |
| Returns true, if the hashset does not contain any elements. | |
| void | Clear () |
| Clears the table. | |
| template<typename CompatibleKeyType > | |
| bool | Insert (CompatibleKeyType &&key) |
| Inserts the key. Returns whether the key was already existing. | |
| template<typename CompatibleKeyType > | |
| bool | Remove (const CompatibleKeyType &key) |
| Removes the entry with the given key. Returns if an entry was removed. | |
| ConstIterator | Remove (const ConstIterator &pos) |
| Erases the key at the given Iterator. Returns an iterator to the element after the given iterator. | |
| template<typename CompatibleKeyType > | |
| bool | Contains (const CompatibleKeyType &key) const |
| Returns if an entry with given key exists in the table. | |
| bool | ContainsSet (const plHashSetBase< KeyType, Hasher > &operand) const |
| Checks whether all keys of the given set are in the container. | |
| void | Union (const plHashSetBase< KeyType, Hasher > &operand) |
| Makes this set the union of itself and the operand. | |
| void | Difference (const plHashSetBase< KeyType, Hasher > &operand) |
| Makes this set the difference of itself and the operand, i.e. subtracts operand. | |
| void | Intersection (const plHashSetBase< KeyType, Hasher > &operand) |
| Makes this set the intersection of itself and the operand. | |
| ConstIterator | GetIterator () const |
| Returns a constant Iterator to the very first element. | |
| ConstIterator | GetEndIterator () const |
| Returns a constant Iterator to the first element that is not part of the hashset. Needed to implement range based for loop support. | |
| plAllocator * | GetAllocator () const |
| Returns the allocator that is used by this instance. | |
| plUInt64 | GetHeapMemoryUsage () const |
| Returns the amount of bytes that are currently allocated on the heap. | |
| void | Swap (plHashSetBase< KeyType, Hasher > &other) |
| Swaps this map with the other one. | |
| template<typename CompatibleKeyType > | |
| ConstIterator | Find (const CompatibleKeyType &key) const |
| Searches for key, returns a ConstIterator to it or an invalid iterator, if no such key is found. O(1) operation. | |
| template<typename CompatibleKeyType > | |
| PL_FORCE_INLINE bool | Contains (const CompatibleKeyType &key) const |
| template<typename CompatibleKeyType > | |
| PL_FORCE_INLINE plHashSetBase< K, H >::ConstIterator | Find (const CompatibleKeyType &key) const |
| template<typename CompatibleKeyType > | |
| PL_FORCE_INLINE plUInt32 | FindEntry (const CompatibleKeyType &key) const |
Protected Member Functions | |
| plHashSetBase (plAllocator *pAllocator) | |
| Creates an empty hashset. Does not allocate any data yet. | |
| plHashSetBase (const plHashSetBase< KeyType, Hasher > &rhs, plAllocator *pAllocator) | |
| Creates a copy of the given hashset. | |
| plHashSetBase (plHashSetBase< KeyType, Hasher > &&rhs, plAllocator *pAllocator) | |
| Moves data from an existing hashtable into this one. | |
| ~plHashSetBase () | |
| Destructor. | |
| void | operator= (const plHashSetBase< KeyType, Hasher > &rhs) |
| Copies the data from another hashset into this one. | |
| void | operator= (plHashSetBase< KeyType, Hasher > &&rhs) |
| Moves data from an existing hashset into this one. | |
Implementation of a hashset.
The hashset stores values by using the hash as an index into the table. This implementation uses linear-probing to resolve hash collisions which means all values are stored in a linear array. All insertion/erasure/lookup functions take O(1) time if the table does not need to be expanded, which happens when the load gets greater than 60%. The hash function can be customized by providing a Hasher helper class like plHashHelper.
| void plHashSetBase< K, H >::Compact | ( | ) |
Tries to compact the hashset to avoid wasting memory.
The resulting capacity is at least 'GetCount' (no elements get removed). Will deallocate all data, if the hashset is empty.