UE4 中 TMap<>与TArray<>的全遍历,及带条件删除

一、UE4 中,TMap 正向遍历,带条件删除。

注意点:在调用 Remove(it->Key);之后,it 并不会自​​​​​​​动往后移动,仍然需要调用 ++it,才会指向下一个值。

	// TMap<> 正向遍历,带条件删除。
	TMap aaaa;
	aaaa.Add(1, 2);
	aaaa.Add(16, 2);
	aaaa.Add(7, 2);
	aaaa.Add(5, 2);
	aaaa.Add(26, 2);
	aaaa.Add(2, 2);
	aaaa.Add(4, 2);
	aaaa.Add(8, 2);
	aaaa.Add(6, 2);
	TMap::TIterator it = aaaa.CreateIterator();
	for (; it; ++it)
	{
		int32 nn = it->Key;
		if (it->Key == 7 || it->Key == 2 || it->Key == 8)
		{
			aaaa.Remove(it->Key);
		}
	}

二、UE4 中,TArray<> 正向遍历,带条件删除。

注意点:在调用 RemoveAt(i) 之后,不能执行 i++,否则会漏掉一个元素的访问。

	// TArray<> 正向遍历,带条件删除。
	TArray ArrInt = { 3,6,1,3,7,2,9,8,6 };
	for (int32 i = 0; i < ArrInt.Num();)
	{
		int32 nTemp = ArrInt[i];
		if (nTemp == 1 || nTemp == 7 || nTemp == 8)
		{
			ArrInt.RemoveAt(i);
			continue;
		}
		i++;
	}

三、UE4 中,TArray<> 逆向遍历,带条件删除。

注意点:这里删除后,没有特殊操作,也是推荐的删除方法。

	// TArray<> 逆向遍历,带条件删除。
	TArray ArrIntR = { 3,6,1,3,7,2,9,8,6 };
	for (int32 j = ArrIntR.Num() - 1; j >= 0; j--)
	{
		int32 nTemp = ArrIntR[j];
		if (nTemp == 1 || nTemp == 7 || nTemp == 8)
		{
			ArrIntR.RemoveAt(j);
		}
	}

你可能感兴趣的:(UE4,ue4)