UE TMap TArray 如果在正常遍历中,删除某一个值,然后还需要继续遍历,这样可能会造成内存异常,因为在遍历中删除只会照成遍历的顺序的混乱,所以如果需要一边遍历, 一边删除,则需要使用迭代器,这个和 c++ 的 vector map 是一样的道理。
TMap<int32, FString> MapTest; for ( TMap<int32, FString>::TIterator ItrMap(MapTest); ItrMap; ++ItrMap ) { // 删除指定数据 if (ItrMap.Value().Equals(TEXT("删除数据"))) { ItrMap.RemoveCurrent(); } }
TArray<FString> ArrayTest; for ( TArray<FString>::TIterator Itr(ArrayTest); Itr; ++Itr ) { // 删除指定数据 if ((*Itr).Equals(TEXT("删除数据"))) { Itr.RemoveCurrent(); } }