ezEngine  Release 25.03
ezSetBase< KeyType, Comparer > Class Template Reference

A set container that only stores whether an element resides in it or not. Similar to STL::set. More...

#include <Set.h>

Classes

struct  IteratorBase
 Base class for all iterators. More...
 

Public Types

using Iterator = IteratorBase< false >
 
using ReverseIterator = IteratorBase< true >
 

Public Member Functions

bool IsEmpty () const
 Returns whether there are no elements in the set. O(1) operation.
 
ezUInt32 GetCount () const
 Returns the number of elements currently stored in the set. O(1) operation.
 
void Clear ()
 Destroys all elements in the set and resets its size to zero.
 
Iterator GetIterator () const
 Returns a constant Iterator to the very first element.
 
ReverseIterator GetReverseIterator () const
 Returns a constant ReverseIterator to the very last element.
 
template<typename CompatibleKeyType >
Iterator Insert (CompatibleKeyType &&key)
 Inserts the key into the tree and returns an Iterator to it. O(log n) operation.
 
template<typename CompatibleKeyType >
bool Remove (const CompatibleKeyType &key)
 Erases the element with the given key, if it exists. O(log n) operation.
 
Iterator Remove (const Iterator &pos)
 Erases the element at the given Iterator. O(log n) operation.
 
template<typename CompatibleKeyType >
Iterator 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.
 
bool ContainsSet (const ezSetBase< KeyType, Comparer > &operand) const
 Checks whether all keys of the given set are in the container.
 
template<typename CompatibleKeyType >
Iterator 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 >
Iterator 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.
 
void Union (const ezSetBase< KeyType, Comparer > &operand)
 Makes this set the union of itself and the operand.
 
void Difference (const ezSetBase< KeyType, Comparer > &operand)
 Makes this set the difference of itself and the operand, i.e. subtracts operand.
 
void Intersection (const ezSetBase< KeyType, Comparer > &operand)
 Makes this set the intersection of itself and the operand.
 
ezAllocatorGetAllocator () const
 Returns the allocator that is used by this instance.
 
bool operator== (const ezSetBase< KeyType, Comparer > &rhs) const
 Comparison operator.
 
 EZ_ADD_DEFAULT_OPERATOR_NOTEQUAL (const ezSetBase< KeyType, Comparer > &)
 
ezUInt64 GetHeapMemoryUsage () const
 Returns the amount of bytes that are currently allocated on the heap.
 
void Swap (ezSetBase< KeyType, Comparer > &other)
 Swaps this map with the other one.
 
template<typename CompatibleKeyType >
EZ_ALWAYS_INLINE ezSetBase< KeyType, Comparer >::Iterator Find (const CompatibleKeyType &key) const
 
template<typename CompatibleKeyType >
EZ_ALWAYS_INLINE bool Contains (const CompatibleKeyType &key) const
 
template<typename CompatibleKeyType >
EZ_ALWAYS_INLINE ezSetBase< KeyType, Comparer >::Iterator LowerBound (const CompatibleKeyType &key) const
 
template<typename CompatibleKeyType >
EZ_ALWAYS_INLINE ezSetBase< KeyType, Comparer >::Iterator UpperBound (const CompatibleKeyType &key) const
 

Protected Member Functions

 ezSetBase (const Comparer &comparer, ezAllocator *pAllocator)
 Initializes the set to be empty.
 
 ezSetBase (const ezSetBase< KeyType, Comparer > &cc, ezAllocator *pAllocator)
 Copies all keys from the given set into this one.
 
 ~ezSetBase ()
 Destroys all elements in the set.
 
void operator= (const ezSetBase< KeyType, Comparer > &rhs)
 Copies all keys from the given set into this one.
 

Detailed Description

template<typename KeyType, typename Comparer>
class ezSetBase< KeyType, Comparer >

A set container that only stores whether an element resides in it or not. Similar to STL::set.

Sets are similar to maps that do not store a value (or only a bool that is always true). Sets can be used to reduce an unordered number of elements to only those that are unique. Insertion/erasure/lookup in sets is quite fast (O (log n)). This container is implemented with a red-black tree, so it will always be a balanced tree.


The documentation for this class was generated from the following files: