/Engine/Source/Runtime/Core/Public/Containers/SparseArray.h
A dynamically sized array where element indices aren't necessarily contiguous. Memory is allocated for all elements in the array's index range, so it doesn't save memory; but it does allow O(1) element removal that doesn't invalidate the indices of subsequent elements. It usesTArrayto store the elements, and aTBitArrayto store whether each element index is allocated (for fast iteration over allocated elements).
template<typename InElementType, typename Allocator> class TSparseArray
*:  Add(A) ...
Frame2
Sort the free element list so that subsequent allocations will occur in the lowest available position resulting in tighter packing without moving any existing items.
Free list is
now