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

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

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

	// TMap<> 正向遍历,带条件删除。
	TMap<int32, int32> 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<int32, int32>::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<int32> 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<int32> 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);
		}
	}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值