UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FInstancedStructContainer Struct Reference

#include <InstancedStructContainer.h>

Classes

struct  TIterator
 

Public Types

using FIterator = TIterator< FInstancedStructContainer >
 
using FConstIterator = TIterator< const FInstancedStructContainer >
 

Public Member Functions

UE_API FInstancedStructContainer ()
 
UE_API FInstancedStructContainer (const FInstancedStructContainer &InOther)
 
UE_API FInstancedStructContainer (FInstancedStructContainer &&InOther)
 
 ~FInstancedStructContainer ()
 
UE_API FInstancedStructContaineroperator= (const FInstancedStructContainer &InOther)
 
UE_API FInstancedStructContaineroperator= (FInstancedStructContainer &&InOther)
 
UE_API FInstancedStructContaineroperator= (TConstArrayView< FInstancedStruct > InItems)
 
UE_API FInstancedStructContaineroperator= (TConstArrayView< FStructView > InItems)
 
UE_API FInstancedStructContaineroperator= (TConstArrayView< FConstStructView > InItems)
 
UE_API void Append (const FInstancedStructContainer &Other)
 
UE_API void Append (TConstArrayView< FInstancedStruct > NewItemValues)
 
UE_API void Append (TConstArrayView< FConstStructView > NewItemValues)
 
UE_API void InsertAt (const int32 InsertAtIndex, const FInstancedStructContainer &Other)
 
UE_API void InsertAt (const int32 InsertAtIndex, TConstArrayView< FInstancedStruct > ValuesToInsert)
 
UE_API void InsertAt (const int32 InsertAtIndex, TConstArrayView< FStructView > ValuesToInsert)
 
UE_API void InsertAt (const int32 InsertAtIndex, TConstArrayView< FConstStructView > ValuesToInsert)
 
UE_API void RemoveAt (const int32 RemoveAtIndex, const int32 Count)
 
UE_API void ReserveBytes (const int32 NumBytes, const int32 MinAlignment=DefaultMinAlignment)
 
UE_API void SetNum (const int32 NewNum)
 
int32 GetAllocatedMemory () const
 
UE_API void Reset ()
 
UE_API void Empty ()
 
bool IsValid () const
 
int32 Num () const
 
bool IsValidIndex (const int32 Index) const
 
FConstStructView operator[] (const int32 Index) const
 
FStructView operator[] (const int32 Index)
 
FIterator CreateIterator ()
 
FConstIterator CreateConstIterator () const
 
FIterator begin ()
 
FIterator end ()
 
FConstIterator begin () const
 
FConstIterator end () const
 
UE_API void AddStructReferencedObjects (FReferenceCollector &Collector)
 
UE_API bool Identical (const FInstancedStructContainer *Other, uint32 PortFlags) const
 
UE_API bool Serialize (FArchive &Ar)
 
UE_API void GetPreloadDependencies (TArray< UObject * > &OutDeps) const
 
UE_API bool ExportTextItem (FString &ValueStr, FInstancedStructContainer const &DefaultValue, UObject *Parent, int32 PortFlags, UObject *ExportRootScope) const
 
UE_API bool ImportTextItem (const TCHAR *&Buffer, int32 PortFlags, UObject *Parent, FOutputDevice *ErrorText, FArchive *InSerializingArchive=nullptr)
 

Static Public Attributes

static constexpr int32 OverheadPerItem = sizeof(FItem)
 

Detailed Description

Array of heterogeneous structs. Can be used as a property, supports serialization, but does not have type customizations (no editing in the UI).

If you need UI editable array of heterogeneous structs, use TArray<FInstancedStruct> instead.

The array item values and the index to an item are stored in one contiguous block of memory. The size required to specific layout of structs is larger than the sum of their sizes due to alignment, and because the index to the structs is stored along with the value memory. Each item takes extra 16 bytes for index. If your items are roughly same size, a TArray<TVariant<>> might be more performant.

Adding new items is more expensive than on regular TArray<>, layout of the structs needs to be updated, and initialization is done via UScriptStruct. Adding and removing items should be done in chunks if possible.

The allocation of new items does not allocate extra space as most array implementations do. Use Reserve() to reserve certain sized buffer in bytes if that is applicable to your use case.

Member Typedef Documentation

◆ FConstIterator

◆ FIterator

Constructor & Destructor Documentation

◆ FInstancedStructContainer() [1/3]

FInstancedStructContainer::FInstancedStructContainer ( )

◆ FInstancedStructContainer() [2/3]

FInstancedStructContainer::FInstancedStructContainer ( const FInstancedStructContainer InOther)

◆ FInstancedStructContainer() [3/3]

FInstancedStructContainer::FInstancedStructContainer ( FInstancedStructContainer &&  InOther)

◆ ~FInstancedStructContainer()

FInstancedStructContainer::~FInstancedStructContainer ( )
inline

Member Function Documentation

◆ AddStructReferencedObjects()

void FInstancedStructContainer::AddStructReferencedObjects ( FReferenceCollector Collector)

Type traits

◆ Append() [1/3]

void FInstancedStructContainer::Append ( const FInstancedStructContainer Other)

Appends items to the array.

◆ Append() [2/3]

void FInstancedStructContainer::Append ( TConstArrayView< FConstStructView NewItemValues)

◆ Append() [3/3]

void FInstancedStructContainer::Append ( TConstArrayView< FInstancedStruct NewItemValues)

◆ begin() [1/2]

FIterator FInstancedStructContainer::begin ( )
inline

For ranged for, do not use directly.

◆ begin() [2/2]

FConstIterator FInstancedStructContainer::begin ( ) const
inline

◆ CreateConstIterator()

FConstIterator FInstancedStructContainer::CreateConstIterator ( ) const
inline

Creates const iterator to iterate over the array.

◆ CreateIterator()

FIterator FInstancedStructContainer::CreateIterator ( )
inline

Creates iterator to iterate over the array.

◆ Empty()

void FInstancedStructContainer::Empty ( )

Empties the array, destroys entities. Frees memory.

◆ end() [1/2]

FIterator FInstancedStructContainer::end ( )
inline

◆ end() [2/2]

FConstIterator FInstancedStructContainer::end ( ) const
inline

◆ ExportTextItem()

bool FInstancedStructContainer::ExportTextItem ( FString &  ValueStr,
FInstancedStructContainer const &  DefaultValue,
UObject Parent,
int32  PortFlags,
UObject ExportRootScope 
) const

◆ GetAllocatedMemory()

int32 FInstancedStructContainer::GetAllocatedMemory ( ) const
inline

Returns number of bytes allocated for the array

◆ GetPreloadDependencies()

void FInstancedStructContainer::GetPreloadDependencies ( TArray< UObject * > &  OutDeps) const

◆ Identical()

bool FInstancedStructContainer::Identical ( const FInstancedStructContainer Other,
uint32  PortFlags 
) const

◆ ImportTextItem()

bool FInstancedStructContainer::ImportTextItem ( const TCHAR *&  Buffer,
int32  PortFlags,
UObject Parent,
FOutputDevice ErrorText,
FArchive InSerializingArchive = nullptr 
)

◆ InsertAt() [1/4]

void FInstancedStructContainer::InsertAt ( const int32  InsertAtIndex,
const FInstancedStructContainer Other 
)

Insert new items at specified location.

◆ InsertAt() [2/4]

void FInstancedStructContainer::InsertAt ( const int32  InsertAtIndex,
TConstArrayView< FConstStructView ValuesToInsert 
)

◆ InsertAt() [3/4]

void FInstancedStructContainer::InsertAt ( const int32  InsertAtIndex,
TConstArrayView< FInstancedStruct ValuesToInsert 
)

◆ InsertAt() [4/4]

void FInstancedStructContainer::InsertAt ( const int32  InsertAtIndex,
TConstArrayView< FStructView ValuesToInsert 
)

◆ IsValid()

bool FInstancedStructContainer::IsValid ( ) const
inline
Returns
true if the instance is correctly initialized.

◆ IsValidIndex()

bool FInstancedStructContainer::IsValidIndex ( const int32  Index) const
inline
Returns
true of the index is in valid range to the array.

◆ Num()

int32 FInstancedStructContainer::Num ( ) const
inline
Returns
Number of items in the instance data.

◆ operator=() [1/5]

FInstancedStructContainer & FInstancedStructContainer::operator= ( const FInstancedStructContainer InOther)

◆ operator=() [2/5]

FInstancedStructContainer & FInstancedStructContainer::operator= ( FInstancedStructContainer &&  InOther)

◆ operator=() [3/5]

FInstancedStructContainer & FInstancedStructContainer::operator= ( TConstArrayView< FConstStructView InItems)

◆ operator=() [4/5]

FInstancedStructContainer & FInstancedStructContainer::operator= ( TConstArrayView< FInstancedStruct InItems)

◆ operator=() [5/5]

FInstancedStructContainer & FInstancedStructContainer::operator= ( TConstArrayView< FStructView InItems)

◆ operator[]() [1/2]

FStructView FInstancedStructContainer::operator[] ( const int32  Index)
inline
Returns
view to the struct at specified index.

◆ operator[]() [2/2]

FConstStructView FInstancedStructContainer::operator[] ( const int32  Index) const
inline
Returns
view to the struct at specified index.

◆ RemoveAt()

void FInstancedStructContainer::RemoveAt ( const int32  RemoveAtIndex,
const int32  Count 
)

Remove items at specific location. Does not change memory allocation.

◆ ReserveBytes()

void FInstancedStructContainer::ReserveBytes ( const int32  NumBytes,
const int32  MinAlignment = DefaultMinAlignment 
)

Reserves at least 'NumBytes' for internal storage.

◆ Reset()

void FInstancedStructContainer::Reset ( )

Empties the array, destroys entities. Does not change memory allocation.

◆ Serialize()

bool FInstancedStructContainer::Serialize ( FArchive Ar)

◆ SetNum()

void FInstancedStructContainer::SetNum ( const int32  NewNum)

Sets the number of items in the array. Note: this can only shrink the array. Does not change memory allocation.

Member Data Documentation

◆ OverheadPerItem

constexpr int32 FInstancedStructContainer::OverheadPerItem = sizeof(FItem)
staticconstexpr

How much memory is used to store info about each item.


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