RealDocs

TArray

class Core Blueprint Since 1.0
#include "Containers/Array.h"
Access: public

Description

The primary dynamic array container in Unreal Engine, equivalent to `std::vector`. Stores elements contiguously in memory. Supports UPROPERTY reflection for Blueprint integration and engine serialization. Provides ordered, random-access storage with amortized O(1) append.

Caveats & Gotchas

  • TArray is not thread-safe. Protect concurrent access with locks or use thread-safe alternatives.
  • Avoid storing raw UObject pointers in TArray across frames — use TArray<TObjectPtr<T>> or TArray<TWeakObjectPtr<T>> to cooperate with GC.
  • Reserve() upfront when you know the final size to avoid repeated reallocations.
  • Range-based for loops invalidate if you add/remove elements during iteration. Copy first or use a reverse index loop for removal.
  • RemoveAt() is O(N) unless you use RemoveAtSwap() which is O(1) but does not preserve order.

Signature

template <typename InElementType, typename InAllocatorType = FDefaultAllocator> class TArray

Examples

Common TArray operations C++
TArray<int32> Numbers;
Numbers.Reserve(10);         // Preallocate
Numbers.Add(1);
Numbers.Add(2);
Numbers.Add(3);
Numbers.Insert(99, 0);       // Insert at index 0

// Iteration
for (int32 N : Numbers)
{
    UE_LOG(LogTemp, Log, TEXT("%d"), N);
}

// Find
int32 Idx = Numbers.IndexOfByKey(2); // Returns 2 (after insert)
bool bHas = Numbers.Contains(99);    // true

// Remove (preserves order, O(N))
Numbers.Remove(99);

// Sort
Numbers.Sort([](int32 A, int32 B) { return A < B; });
UPROPERTY declaration C++
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FString> Names;

UPROPERTY()
TArray<TObjectPtr<UMyObject>> ManagedObjects; // GC-safe

Functions (63)

Utility
34
Access Type Name
public function TArray::Empty
public function TArray::Insert
public function TArray::Pop
public function TArray::Push
public function TArray::RemoveAt
public function TArray::SetNum
public function TArray::Add
public function TArray::AddUnique
public function TArray::ContainsByPredicate
public function TArray::Emplace
public function TArray::Find
public function TArray::FindByPredicate
public function TArray::Heapify
public function TArray::Num
public function TArray::Remove
public function TArray::RemoveAll
public function TArray::RemoveAtSwap
public function TArray::Reserve
public function TArray::Reset
public function TArray::Shrink
public function TArray::Sort
public function TArray::StableSort
public function TArray::Swap
public function TArray — deprecated bool shrinking overloads deprecated
public function TArray::AddUninitialized
public function TArray::CheckAddress
public function TArray::CheckInvariants
public function TArray::InsertDefaulted
public function TArray::InsertDefaulted_GetRef
public function TArray::InsertUninitialized
public function TArray::InsertZeroed
public function TArray::InsertZeroed_GetRef
protected function TArray::RangeCheck
public function TArray::SwapMemory
Add / Insert
5
Access Type Name
public function TArray::Append
public function TArray::Init
public function TArray::AddDefaulted
public function TArray::AddZeroed
public function TArray::EmplaceAt
Allocation
3
Access Type Name
public function TArray::SetNumUninitialized
public function TArray::SetNumZeroed
public function TArray::SetNumUnsafeInternal
Heap Operations
6
Access Type Name
public function TArray::HeapPop
public function TArray::HeapPopDiscard
public function TArray::HeapPush
public function TArray::HeapSort
public function TArray::HeapRemoveAt
public function TArray::VerifyHeap
Internal State
1
Access Type Name
public function TArray — UE_REQUIRES constraint
Query
3
Access Type Name
public function TArray::Contains
public function TArray::IsEmpty
public function TArray::FindLast
Remove
4
Access Type Name
public function TArray::RemoveSingle
public function TArray::RemoveAllSwap
public function TArray::RemoveSingleSwap
public function TArray::RemoveSwap
Serialization
6
Access Type Name
public function TArray::AppendHash
public function TArray::BulkSerialize
public function TArray::CopyUnfrozen
public function TArray::CountBytes
public function TArray::ToString
public function TArray::WriteMemoryImage

Properties

Access Type Name
protected property TArray::AllocatorInstance
protected property TArray::ArrayMax
protected property TArray::ArrayNum

See Also

Version History

Introduced in: 1.0

Version Status Notes
5.6 stable
5.0 stable TObjectPtr support added for UPROPERTY arrays.

Feedback

Was this helpful?

Suggest an edit

Select a field above to begin editing.