![]() |
ezEngine
Release 25.03
|
An associative container. Similar to STL::map. More...
#include <Map.h>
Public Types | |
using | ConstIterator = ezMapBaseConstIteratorBase< KeyType, ValueType, Comparer, false > |
using | ConstReverseIterator = ezMapBaseConstIteratorBase< KeyType, ValueType, Comparer, true > |
using | Iterator = ezMapBaseIteratorBase< KeyType, ValueType, Comparer, false > |
using | ReverseIterator = ezMapBaseIteratorBase< KeyType, ValueType, Comparer, true > |
Public Member Functions | |
bool | IsEmpty () const |
Returns whether there are no elements in the map. O(1) operation. | |
ezUInt32 | GetCount () const |
Returns the number of elements currently stored in the map. O(1) operation. | |
void | Clear () |
Destroys all elements in the map and resets its size to zero. | |
Iterator | GetIterator () |
Returns an Iterator to the very first element. | |
ReverseIterator | GetReverseIterator () |
Returns a ReverseIterator to the very last element. | |
ConstIterator | GetIterator () const |
Returns a constant Iterator to the very first element. | |
ConstReverseIterator | GetReverseIterator () const |
Returns a constant ReverseIterator to the very last element. | |
template<typename CompatibleKeyType , typename CompatibleValueType > | |
Iterator | Insert (CompatibleKeyType &&key, CompatibleValueType &&value) |
Inserts the key/value pair into the tree and returns an Iterator to it. O(log n) operation. | |
template<typename CompatibleKeyType > | |
bool | Remove (const CompatibleKeyType &key) |
Erases the key/value pair with the given key, if it exists. O(log n) operation. | |
Iterator | Remove (const Iterator &pos) |
Erases the key/value pair at the given Iterator. O(log n) operation. Returns an iterator to the element after the given iterator. | |
template<typename CompatibleKeyType > | |
Iterator | FindOrAdd (CompatibleKeyType &&key, bool *out_pExisted=nullptr) |
Searches for the given key and returns an iterator to it. If it did not exist yet, it is default-created. bExisted is set to true, if the key was found, false if it needed to be created. | |
template<typename CompatibleKeyType > | |
ValueType & | operator[] (const CompatibleKeyType &key) |
Allows read/write access to the value stored under the given key. If there is no such key, a new element is default-constructed. | |
template<typename CompatibleKeyType > | |
bool | TryGetValue (const CompatibleKeyType &key, ValueType &out_value) const |
Returns whether an entry with the given key was found and if found writes out the corresponding value to out_value. | |
template<typename CompatibleKeyType > | |
bool | TryGetValue (const CompatibleKeyType &key, const ValueType *&out_pValue) const |
Returns whether an entry with the given key was found and if found writes out the pointer to the corresponding value to out_pValue. | |
template<typename CompatibleKeyType > | |
bool | TryGetValue (const CompatibleKeyType &key, ValueType *&out_pValue) const |
Returns whether an entry with the given key was found and if found writes out the pointer to the corresponding value to out_pValue. | |
template<typename CompatibleKeyType > | |
const ValueType * | GetValue (const CompatibleKeyType &key) const |
Returns a pointer to the value of the entry with the given key if found, otherwise returns nullptr. | |
template<typename CompatibleKeyType > | |
ValueType * | GetValue (const CompatibleKeyType &key) |
Returns a pointer to the value of the entry with the given key if found, otherwise returns nullptr. | |
template<typename CompatibleKeyType > | |
const ValueType & | GetValueOrDefault (const CompatibleKeyType &key, const ValueType &defaultValue) const |
Either returns the value of the entry with the given key, if found, or the provided default value. | |
template<typename CompatibleKeyType > | |
Iterator | Find (const CompatibleKeyType &key) |
Searches for key, returns an Iterator to it or an invalid iterator, if no such key is found. O(log n) operation. | |
template<typename CompatibleKeyType > | |
Iterator | LowerBound (const CompatibleKeyType &key) |
Returns an Iterator to the element with a key equal or larger than the given key. Returns an invalid iterator, if there is no such element. | |
template<typename CompatibleKeyType > | |
Iterator | UpperBound (const CompatibleKeyType &key) |
Returns an Iterator to the element with a key that is LARGER than the given key. Returns an invalid iterator, if there is no such element. | |
template<typename CompatibleKeyType > | |
ConstIterator | Find (const CompatibleKeyType &key) const |
Searches for key, returns an Iterator to it or an invalid iterator, if no such key is found. O(log n) operation. | |
template<typename CompatibleKeyType > | |
bool | Contains (const CompatibleKeyType &key) const |
Checks whether the given key is in the container. | |
template<typename CompatibleKeyType > | |
ConstIterator | LowerBound (const CompatibleKeyType &key) const |
Returns an Iterator to the element with a key equal or larger than the given key. Returns an invalid iterator, if there is no such element. | |
template<typename CompatibleKeyType > | |
ConstIterator | UpperBound (const CompatibleKeyType &key) const |
Returns an Iterator to the element with a key that is LARGER than the given key. Returns an invalid iterator, if there is no such element. | |
ezAllocator * | GetAllocator () const |
Returns the allocator that is used by this instance. | |
bool | operator== (const ezMapBase< KeyType, ValueType, Comparer > &rhs) const |
Comparison operator. | |
EZ_ADD_DEFAULT_OPERATOR_NOTEQUAL (const ezMapBase< KeyType, ValueType, Comparer > &) | |
ezUInt64 | GetHeapMemoryUsage () const |
Returns the amount of bytes that are currently allocated on the heap. | |
void | Swap (ezMapBase< KeyType, ValueType, Comparer > &other) |
Swaps this map with the other one. | |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE bool | TryGetValue (const CompatibleKeyType &key, ValueType &out_value) const |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE bool | TryGetValue (const CompatibleKeyType &key, const ValueType *&out_pValue) const |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE bool | TryGetValue (const CompatibleKeyType &key, ValueType *&out_pValue) const |
template<typename CompatibleKeyType > | |
const EZ_ALWAYS_INLINE ValueType * | GetValue (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE ValueType * | GetValue (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
const EZ_ALWAYS_INLINE ValueType & | GetValueOrDefault (const CompatibleKeyType &key, const ValueType &defaultValue) const |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE ezMapBase< KeyType, ValueType, Comparer >::Iterator | Find (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE ezMapBase< KeyType, ValueType, Comparer >::ConstIterator | Find (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE bool | Contains (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE ezMapBase< KeyType, ValueType, Comparer >::Iterator | LowerBound (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE ezMapBase< KeyType, ValueType, Comparer >::ConstIterator | LowerBound (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE ezMapBase< KeyType, ValueType, Comparer >::Iterator | UpperBound (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
EZ_ALWAYS_INLINE ezMapBase< KeyType, ValueType, Comparer >::ConstIterator | UpperBound (const CompatibleKeyType &key) const |
Protected Member Functions | |
ezMapBase (const Comparer &comparer, ezAllocator *pAllocator) | |
Initializes the map to be empty. | |
ezMapBase (const ezMapBase< KeyType, ValueType, Comparer > &cc, ezAllocator *pAllocator) | |
Copies all key/value pairs from the given map into this one. | |
~ezMapBase () | |
Destroys all elements from the map. | |
void | operator= (const ezMapBase< KeyType, ValueType, Comparer > &rhs) |
Copies all key/value pairs from the given map into this one. | |
An associative container. Similar to STL::map.
A map allows to store key/value pairs. This in turn allows to search for values by looking them up with a certain key. Key/Value pairs can also be erased again. All insertion/erasure/lookup functions take O(log n) time. The map is implemented using a balanced tree (a red-black tree), which means the order of insertions/erasures is not important, since it can never create a degenerated tree, and performance will always stay the same.
KeyType is the key type. For example a string.
ValueType is the value type. For example int.
Comparer is a helper class that implements a strictly weak-ordering comparison for Key types.