![]() |
ezEngine Release 25.08
|
Wraps a C-style array, which has a fixed size at compile-time, with a more convenient interface. More...
#include <StaticArray.h>

Public Member Functions | |
| EZ_DECLARE_MEM_RELOCATABLE_TYPE_CONDITIONAL (T) | |
| ezStaticArray () | |
| Creates an empty array. | |
| ezStaticArray (const ezStaticArray< T, Capacity > &rhs) | |
| Creates a copy of the given array. | |
| template<ezUInt32 OtherCapacity> | |
| ezStaticArray (const ezStaticArray< T, OtherCapacity > &rhs) | |
| Creates a copy of the given array. | |
| ezStaticArray (const ezArrayPtr< const T > &rhs) | |
| Creates a copy of the given array. | |
| ~ezStaticArray () | |
| Destroys all objects. | |
| void | operator= (const ezStaticArray< T, Capacity > &rhs) |
| Copies the data from some other contiguous array into this one. | |
| template<ezUInt32 OtherCapacity> | |
| void | operator= (const ezStaticArray< T, OtherCapacity > &rhs) |
| Copies the data from some other contiguous array into this one. | |
| void | operator= (const ezArrayPtr< const T > &rhs) |
| Copies the data from some other contiguous array into this one. | |
| void | Reserve (ezUInt32 uiCapacity) |
| For the static array Reserve is a no-op. However the function checks if the requested capacity is below or equal to the static capacity. | |
| template<ezUInt32 OtherCapacity> | |
| EZ_ALWAYS_INLINE void | operator= (const ezStaticArray< T, OtherCapacity > &rhs) |
Public Member Functions inherited from ezArrayBase< T, ezStaticArray< T, Capacity > > | |
| ezArrayBase () | |
| Constructor. | |
| ~ezArrayBase () | |
| Destructor. | |
| void | operator= (const ezArrayPtr< const T > &rhs) |
| Copies the data from some other contiguous array into this one. | |
| operator ezArrayPtr< const T > () const | |
| Conversion to const ezArrayPtr. | |
| operator ezArrayPtr< T > () | |
| Conversion to ezArrayPtr. | |
| bool | operator== (const ezArrayBase< T, ezStaticArray< T, Capacity > > &rhs) const |
| Compares this array to another contiguous array type. | |
| EZ_ADD_DEFAULT_OPERATOR_NOTEQUAL (const ezArrayBase< T, ezStaticArray< T, Capacity > > &) | |
| bool | operator< (const ezArrayBase< T, ezStaticArray< T, Capacity > > &rhs) const |
| Compares this array to another contiguous array type. | |
| bool | operator< (const ezArrayPtr< const T > &rhs) const |
| Compares this array to another contiguous array type. | |
| const T & | operator[] (ezUInt32 uiIndex) const |
| Returns the element at the given index. Does bounds checks in debug builds. | |
| T & | operator[] (ezUInt32 uiIndex) |
| Returns the element at the given index. Does bounds checks in debug builds. | |
| void | SetCount (ezUInt32 uiCount) |
| Resizes the array to have exactly uiCount elements. Default constructs extra elements if the array is grown. | |
| void | SetCount (ezUInt32 uiCount, const T &fillValue) |
| Resizes the array to have exactly uiCount elements. Constructs all new elements by copying the FillValue. | |
| void | SetCountUninitialized (ezUInt32 uiCount) |
| Resizes the array to have exactly uiCount elements. Extra elements might be uninitialized. | |
| void | EnsureCount (ezUInt32 uiCount) |
| Ensures the container has at least uiCount elements. Ie. calls SetCount() if the container has fewer elements, does nothing otherwise. | |
| ezUInt32 | GetCount () const |
| Returns the number of active elements in the array. | |
| bool | IsEmpty () const |
| Returns true, if the array does not contain any elements. | |
| void | Clear () |
| Clears the array. | |
| bool | Contains (const T &value) const |
| Checks whether the given value can be found in the array. O(n) complexity. | |
| void | InsertAt (ezUInt32 uiIndex, const T &value) |
| Inserts value at index by shifting all following elements. | |
| void | InsertAt (ezUInt32 uiIndex, T &&value) |
| Inserts value at index by shifting all following elements. | |
| void | InsertRangeAt (ezUInt32 uiIndex, const ezArrayPtr< const T > &range) |
| Inserts all elements in the range starting at the given index, shifting the elements after the index. | |
| bool | RemoveAndCopy (const T &value) |
| Removes the first occurrence of value and fills the gap by shifting all following elements. | |
| bool | RemoveAndSwap (const T &value) |
| Removes the first occurrence of value and fills the gap by swapping in the last element. | |
| void | RemoveAtAndCopy (ezUInt32 uiIndex, ezUInt32 uiNumElements=1) |
| Removes the element at index and fills the gap by shifting all following elements. | |
| void | RemoveAtAndSwap (ezUInt32 uiIndex, ezUInt32 uiNumElements=1) |
| Removes the element at index and fills the gap by swapping in the last element. | |
| ezUInt32 | IndexOf (const T &value, ezUInt32 uiStartIndex=0) const |
| Searches for the first occurrence of the given value and returns its index or ezInvalidIndex if not found. | |
| ezUInt32 | LastIndexOf (const T &value, ezUInt32 uiStartIndex=ezInvalidIndex) const |
| Searches for the last occurrence of the given value and returns its index or ezInvalidIndex if not found. | |
| T & | ExpandAndGetRef () |
| Grows the array by one element and returns a reference to the newly created element. | |
| T * | ExpandBy (ezUInt32 uiNumNewItems) |
| Expands the array by N new items and returns a pointer to the first new one. | |
| void | PushBack (const T &value) |
| Pushes value at the end of the array. | |
| void | PushBack (T &&value) |
| Pushes value at the end of the array. | |
| void | PushBackUnchecked (const T &value) |
| Pushes value at the end of the array. Does NOT ensure capacity. | |
| void | PushBackUnchecked (T &&value) |
| Pushes value at the end of the array. Does NOT ensure capacity. | |
| void | PushBackRange (const ezArrayPtr< const T > &range) |
| Pushes all elements in range at the end of the array. Increases the capacity if necessary. | |
| void | PopBack (ezUInt32 uiCountToRemove=1) |
| Removes count elements from the end of the array. | |
| T & | PeekBack () |
| Returns the last element of the array. | |
| const T & | PeekBack () const |
| Returns the last element of the array. | |
| void | Sort (const Comparer &comparer) |
| Sort with explicit comparer. | |
| void | Sort () |
| Sort with default comparer. | |
| T * | GetData () |
| Returns a pointer to the array data, or nullptr if the array is empty. | |
| const T * | GetData () const |
| Returns a pointer to the array data, or nullptr if the array is empty. | |
| ezArrayPtr< T > | GetArrayPtr () |
| Returns an array pointer to the array data, or an empty array pointer if the array is empty. | |
| ezArrayPtr< const T > | GetArrayPtr () const |
| Returns an array pointer to the array data, or an empty array pointer if the array is empty. | |
| ezArrayPtr< typename ezArrayPtr< T >::ByteType > | GetByteArrayPtr () |
| Returns a byte array pointer to the array data, or an empty array pointer if the array is empty. | |
| ezArrayPtr< typename ezArrayPtr< const T >::ByteType > | GetByteArrayPtr () const |
| Returns a byte array pointer to the array data, or an empty array pointer if the array is empty. | |
| ezUInt32 | GetCapacity () const |
| Returns the reserved number of elements that the array can hold without reallocating. | |
Protected Member Functions | |
| T * | GetElementsPtr () |
| const T * | GetElementsPtr () const |
Protected Member Functions inherited from ezArrayBase< T, ezStaticArray< T, Capacity > > | |
| void | DoSwap (ezArrayBase< T, ezStaticArray< T, Capacity > > &other) |
Friends | |
| class | ezArrayBase< T, ezStaticArray< T, Capacity > > |
Additional Inherited Members | |
Public Types inherited from ezArrayBase< T, ezStaticArray< T, Capacity > > | |
| using | const_iterator = const T * |
| using | const_reverse_iterator = const_reverse_pointer_iterator< T > |
| using | iterator = T * |
| using | reverse_iterator = reverse_pointer_iterator< T > |
Protected Attributes inherited from ezArrayBase< T, ezStaticArray< T, Capacity > > | |
| T * | m_pElements |
| Element-type access to m_Data. | |
| ezUInt32 | m_uiCount |
| The number of elements used from the array. | |
| ezUInt32 | m_uiCapacity |
| The number of elements which can be stored in the array without re-allocating. | |
Wraps a C-style array, which has a fixed size at compile-time, with a more convenient interface.
ezStaticArray can be used to create a fixed size array, either on the stack or as a class member. Additionally it allows to use that array as a 'cache', i.e. not all its elements need to be constructed. As such it can be used whenever a fixed size array is sufficient, but a more powerful interface is desired, and when the number of elements in an array is dynamic at run-time, but always capped at a fixed limit.