![]() |
ezEngine
Release 25.03
|
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. | |
ezAllocator * | GetAllocator () 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. | |
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.