![]() |
Plasma Engine
2.0
|
An associative container. Similar to STL::map. More...
#include <Map.h>
Inherited by plMap< plGeometry::Vertex, plUInt32 >, plMap< class plATLEvent >, plMap< plUuid, plAbstractObjectNode * >, plMap< plStringView, plAbstractObjectNode * >, plMap< plHybridString, CategoryData >, plMap< plHybridString, plHybridString >, plMap< plUuid, plTreeNode< plActionMapDescriptor > * >, plMap< plHybridString, plActionMap * >, plMap< const plRTTI *, plActorPlugin * >, plMap< SectorID, plAiNavMeshSector >, plMap< plHybridString, plAiNavMesh * >, plMap< plHybridString, dtQueryFilter >, plMap< plHybridString, plAmplitudeConfiguration >, plMap< const plAnimGraphNode *, ConnectionsTo >, plMap< const plSkeletonResource *, CachedAnim >, plMap< plHybridString, plHybridArray< plUuid, 1 > >, plMap< plHybridString, plUniquePtr< plAssetDocumentInfo > >, plMap< plHybridString, plFileStatus >, plMap< plHybridString, plSet< plHybridString > >, plMap< plHybridString, plAssetTable::ManagerResource >, plMap< const plPlatformProfile *, plUniquePtr< plAssetTable > >, plMap< class plATLEntity >, plMap< class plATLListener >, plMap< class plATLTrigger >, plMap< class plATLRtpc >, plMap< class plATLSwitchState >, plMap< class plATLEnvironment >, plMap< class plATLSoundBank >, plMap< plHybridString, FileCheckCache >, plMap< plHybridString, CustomAction >, plMap< plHybridString, const plDocumentTypeDescriptor * >, plMap< const plPin *, plHybridArray< const plConnection *, 6 > >, plMap< plUInt64, plHybridString >, plMap< plHybridString, plDynamicBitflags >, plMap< plInt32, plHybridString >, plMap< plHybridString, plDynamicEnum >, plMap< plDynamicTree::plMultiMapKey, plDynamicTree::plObjectData >, plMap< plHybridString, plDynamicStringEnum >, plMap< HandleType, plUuid >, plMap< plUuid, plEditorEngineSyncObject * >, plMap< plUuid, plHybridArray< GoReferenceTo, 4 > >, plMap< plUuid, plHybridArray< GoReferencedBy, 4 > >, plMap< plUuid, ParamData >, plMap< plHybridString, plFileSystemMirror::DirEntry >, plMap< plHybridString, T >, plMap< plHybridString, plUInt16 >, plMap< plHybridString, FileCacheStatus >, plMap< plUInt32, plDelegate >, plMap< plHybridString, float >, plMap< plHybridString, plFmodConfiguration >, plMap< plUInt32, plDynamicArray< plGPUResourcePool::TextureHandleWithAge > >, plMap< plUInt32, plDynamicArray< plGPUResourcePool::BufferHandleWithAge > >, plMap< const plRTTI *, plGameObjectEditTool * >, plMap< plString, plActionMap >, plMap< plString, plInputSlot >, plMap< plTime, Data >, plMap< plJoltRagdollComponent *, plInt32 >, plMap< plJoltRopeComponent *, plInt32 >, plMap< plUInt64, plJoltContactListener::TriggerObj >, plMap< DebugBodyShapeKey, DebugGeo >, plMap< const void *, DebugGeoShape >, plMap< const plDocument *, Data >, plMap< plHybridString, plVariant >, plMap< plHybridString, plModelImporter2::OutputTexture >, plMap< plUInt32, plHybridArray< MeshInstance, 4 > >, plMap< TextureSemantic, plHybridString >, plMap< PropertySemantic, plVariant >, plMap< plHybridString, plTransformTemplate >, plMap< plHybridString, plOBJLoader::Material >, plMap< const plDocumentObject *, plHybridArray >, plMap< plHybridString, plOpenDdlReaderElement * >, plMap< plHybridString, plColor >, plMap< plHybridString, plParticleEffectHandle >, plMap< plHybridString, plParticleStreamFactory * >, plMap< plHashedString, plHashSet< plHashedString > >, plMap< vk::Image, ImageState >, plMap< vk::Buffer, BufferState >, plMap< plHybridString, plPluginBundle >, plMap< plUInt64, plUniquePtr< plAbstractObjectGraph > >, plMap< plUuid, plUniquePtr< PrefabData > >, plMap< const plDocument *, plMap< const plRTTI *, plPreferences * > >, plMap< plHybridString, MacroDefinition >, plMap< plHybridString, plPropertyUiState >, plMap< plUuid, Binding >, plMap< plHybridString, plCVarWidgetData >, plMap< plHybridString, TransferData >, plMap< plHybridString, TransferDataObject >, plMap< plInt64, QCheckBox * >, plMap< plHybridString, plUInt32 >, plMap< plHybridString, GlobalEventsData >, plMap< QString, CacheEntry >, plMap< QString, QPixmap >, plMap< plHybridString, ImageGeneratorFunc >, plMap< plHybridString, QTreeWidgetItem * >, plMap< plHybridString, SlotData >, plMap< plHybridString, ActionData >, plMap< plHybridString, StatData >, plMap< plUInt32, AllocatorData >, plMap< const plDocumentObject *, plQtNode * >, plMap< const plDocumentObject *, plQtConnection * >, plMap< plHybridString, plDocumentObject * >, plMap< plHybridString, PluginsData >, plMap< plUuid, const plDocument * >, plMap< plUInt32, bool >, plMap< plActionDescriptorHandle, QWeakPointer< plQtProxy > >, plMap< const plDocument *, plMap< plActionDescriptorHandle, QWeakPointer< plQtProxy > > >, plMap< QWidget *, plMap< plActionDescriptorHandle, QWeakPointer< plQtProxy > > >, plMap< plHybridString, TypeData >, plMap< plUuid, plQtGameObjectWidget * >, plMap< plHybridString, QStandardItem * >, plMap< plHybridString, StatsData >, plMap< plHybridString, SubsystemData >, plMap< plHybridString, ClockData >, plMap< QModelIndex, bool >, plMap< plHybridString, PropertyWidgetData >, plMap< plHybridString, QIcon >, plMap< plHybridString, QImage >, plMap< plHybridString, QPixmap >, plMap< plHybridString, plSharedPtr< plRasterizerObject > >, plMap< const plRTTI *, ReflectedTypeStorageMapping * >, plMap< ShaderVertexDecl, plGALVertexDeclarationHandle >, plMap< plUInt32, plDynamicArray< plConstantBufferStorageBase * > >, plMap< const plRenderPipelinePass *, ConnectionData >, plMap< plHybridString, plRenderWorld::CameraConfig >, plMap< const plRefCounted *, plHybridArray< GraphicsPipelineMap::Iterator, 1 > >, plMap< const plRefCounted *, plHybridArray< ComputePipelineMap::Iterator, 1 > >, plMap< const plRTTI *, plResourcePriority >, plMap< const plRTTI *, plResourceTypeLoader * >, plMap< plResource *, plUniquePtr< plResourceTypeLoader > >, plMap< const plRTTI *, plHybridArray< plResourceManager::DerivedTypeInfo, 4 > >, plMap< plHybridString, const plRTTI * >, plMap< const plRTTI *, plResourceManager::ResourceTypeInfo >, plMap< plUuid, plScriptCompendiumResourceDesc::ComponentTypeInfo >, plMap< plHybridString, plHybridArray< plHybridString, 4 > >, plMap< plUInt32, plShaderStageBinary >, plMap< plHybridString, ShaderData >, plMap< size_t, plSingletonRegistry::SingletonEntry >, plMap< plHybridString, FileContent >, plMap< plTempHashedString, plTag >, plMap< plUInt64, MessageQueue >, plMap< plHybridString, plTokenizedFileCache::FileData >, plMap< plHybridString, plToolsTag >, plMap< plHybridString, plTimestamp >, plMap< plUuid, bool >, plMap< plUuid, plTypeScriptBinding::TsComponentInfo >, plMap< plHybridString, plUniquePtr< plCVar > >, plMap< plHybridString, plTypeScriptBinding::ConsoleFuncBinding >, plMap< plGameObjectHandle, plUInt32 >, plMap< plComponentHandle, plUInt32 >, plMap< plUuid, TsComponentInfo >, plMap< plHybridString, PropertyValue >, plMap< const plRTTI *, plVisualScriptNodeRegistry::NodeDesc >, plMap< const plDocumentObject *, NodeState >, plMap< const plPin *, OutputPinState >, plMap< plInt8, plSet< plHybridString > >, plMap< const plRTTI *, plVisualShaderNodeDescriptor >, plMap< const plDocument *, DocData >, plMap< plGameObjectHandle, plUuid >, plMap< plComponentHandle, plUuid >, plMap< plUInt32, plUuid >, and plMap< KeyType, ValueType, Comparer, AllocatorWrapper >.
Public Types | |
using | ConstIterator = plMapBaseConstIteratorBase<KeyType, ValueType, Comparer, false> |
using | ConstReverseIterator = plMapBaseConstIteratorBase<KeyType, ValueType, Comparer, true> |
using | Iterator = plMapBaseIteratorBase<KeyType, ValueType, Comparer, false> |
using | ReverseIterator = plMapBaseIteratorBase<KeyType, ValueType, Comparer, true> |
Public Member Functions | |
bool | IsEmpty () const |
Returns whether there are no elements in the map. O(1) operation. | |
plUInt32 | 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. | |
plAllocator * | GetAllocator () const |
Returns the allocator that is used by this instance. | |
bool | operator== (const plMapBase< KeyType, ValueType, Comparer > &rhs) const |
Comparison operator. | |
PL_ADD_DEFAULT_OPERATOR_NOTEQUAL (const plMapBase< KeyType, ValueType, Comparer > &) | |
plUInt64 | GetHeapMemoryUsage () const |
Returns the amount of bytes that are currently allocated on the heap. | |
void | Swap (plMapBase< KeyType, ValueType, Comparer > &other) |
Swaps this map with the other one. | |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE bool | TryGetValue (const CompatibleKeyType &key, ValueType &out_value) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE bool | TryGetValue (const CompatibleKeyType &key, const ValueType *&out_pValue) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE bool | TryGetValue (const CompatibleKeyType &key, ValueType *&out_pValue) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE const ValueType * | GetValue (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE ValueType * | GetValue (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE const ValueType & | GetValueOrDefault (const CompatibleKeyType &key, const ValueType &defaultValue) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE plMapBase< KeyType, ValueType, Comparer >::Iterator | Find (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE plMapBase< KeyType, ValueType, Comparer >::ConstIterator | Find (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE bool | Contains (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE plMapBase< KeyType, ValueType, Comparer >::Iterator | LowerBound (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE plMapBase< KeyType, ValueType, Comparer >::ConstIterator | LowerBound (const CompatibleKeyType &key) const |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE plMapBase< KeyType, ValueType, Comparer >::Iterator | UpperBound (const CompatibleKeyType &key) |
template<typename CompatibleKeyType > | |
PL_ALWAYS_INLINE plMapBase< KeyType, ValueType, Comparer >::ConstIterator | UpperBound (const CompatibleKeyType &key) const |
Protected Member Functions | |
plMapBase (const Comparer &comparer, plAllocator *pAllocator) | |
Initializes the map to be empty. | |
plMapBase (const plMapBase< KeyType, ValueType, Comparer > &cc, plAllocator *pAllocator) | |
Copies all key/value pairs from the given map into this one. | |
~plMapBase () | |
Destroys all elements from the map. | |
void | operator= (const plMapBase< 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.