|
| UE_API | FInstancedStructContainer () |
| |
| UE_API | FInstancedStructContainer (const FInstancedStructContainer &InOther) |
| |
| UE_API | FInstancedStructContainer (FInstancedStructContainer &&InOther) |
| |
| | ~FInstancedStructContainer () |
| |
| UE_API FInstancedStructContainer & | operator= (const FInstancedStructContainer &InOther) |
| |
| UE_API FInstancedStructContainer & | operator= (FInstancedStructContainer &&InOther) |
| |
| UE_API FInstancedStructContainer & | operator= (TConstArrayView< FInstancedStruct > InItems) |
| |
| UE_API FInstancedStructContainer & | operator= (TConstArrayView< FStructView > InItems) |
| |
| UE_API FInstancedStructContainer & | operator= (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) |
| |
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.