UE 官方文档学习 C++TArray 移除操作
一.官方解释的真好,Remove 移除所有 “==” 的元素
二.RemoveSingle,只移除一个,找到的第一个。
三.RemoveAt 移除掉索引的第几个,但它不做判断,你越界了就空了.IsValidIndex可以限制下先。
void AWXArrayActor::XGRemoveElement()
{TArray<int32> ValArr;int32 Temp[] = { 10, 20, 30, 5, 10, 15, 20, 25, 30 };//ValArr.Append(Temp, ARRAY_COUNT(Temp)); //改名字//ValArr.Append(Temp, UE_ARRAY_COUNT(Temp));ValArr.Append(Temp, UE_ARRAY_COUNT(Temp));// ValArr == [10,20,30,5,10,15,20,25,30]ValArr.Remove(20);// ValArr == [10,30,5,10,15,25,30] 移除所有20ValArr.RemoveSingle(30);ValArr.Shrink();ValArr.RemoveAt(2); // Removes the element at index 2// ValArr == [10,5,15,25,30]//ValArr.RemoveAt(99); // This will cause a runtime error as// there is no element at index 99
}
使用 Shrink
函数可移除所有Slack。此才做将把内存分配调整为保存当前元素所需的最小内存。Shrink
不会对数组中的元素产生影响。让内存刚刚好。