That doesn’t exist, because it would be horribly inefficient. It sounds like what you actually want is a ring buffer or something? What is the purpose of shifting all the elements?
So for example, in my financial class, I have a TArray for historic data.
TArray<float> HistoricBuildingIncome
This is initialized to have MAX_MONTH_DATA number of elements. Every month, the oldest data gets deleted, all the rest gets moved and then the new data gets added to 0.
Why not use std::deque which can remove the last (the oldest data) and also the just inserted data?
And yes, after remove, it is horribly inefficient to shift every single member by one. What some people do is to swap content of ‘to be deleted’ to the last one (yes here, last one mean the just inserted) and then delete this new last one. Voila…this way, no body ever get shifted anywhere. And these functionalities exist in C++ STL (this is where std::deque comes from)
#include “Runtime/Core/Public/Containers/Queue.h” TQueue<int> would do it for you. But it wont work as UPROPERTY and it is designed to be thread safe so it likely has significant overhead if you don’t need that.
Alternatively you could wrap TArray for a faster offset based approach: