UE5 C++ TSet 创建初始和迭代

一.TSet定义

把元素本身放入容器,更快速。感觉用的少,并且排序不可靠

都没用到过,后面用到再说,感觉比TArray快,但不会自动排序。

一.创建初始

有点象TArray的感觉

cpp 复制代码
void AWXSetActor::InitSet()
{
	TSet<FString> FruitSet;

	FruitSet.Add(TEXT("Banana"));
	FruitSet.Add(TEXT("Grapefruit"));
	FruitSet.Add(TEXT("Pineapple"));
	// FruitSet == [ "Banana", "Grapefruit", "Pineapple" ]

	FruitSet.Add(TEXT("Pear"));
	FruitSet.Add(TEXT("Banana"));
	// FruitSet == [ "Banana", "Grapefruit", "Pineapple", "Pear" ]
	// Note: Only one banana entry.

	TSet<FString> FruitSet2;
	FruitSet2.Emplace(TEXT("Kiwi"));
	FruitSet2.Emplace(TEXT("Melon"));
	FruitSet2.Emplace(TEXT("Mango"));
	FruitSet2.Emplace(TEXT("Orange"));
	FruitSet.Append(FruitSet2);
	// FruitSet == [ "Banana", "Grapefruit", "Pineapple", "Pear", "Orange", "Kiwi", "Melon", "Mango" ]
}

2.迭代,两种迭代器 和 &:

auto,如果明确只知道类型,可以用类型替换。迭代器要多加个*。改引用就是改对应的内存

cpp 复制代码
void AWXSetActor::LoopSet()
{
	TSet<FString> FruitSet;

	FruitSet.Add(TEXT("Banana"));
	FruitSet.Add(TEXT("Grapefruit"));
	FruitSet.Add(TEXT("Pineapple"));
	// FruitSet == [ "Banana", "Grapefruit", "Pineapple" ]

	FruitSet.Add(TEXT("Pear"));
	FruitSet.Add(TEXT("Banana"));
	// FruitSet == [ "Banana", "Grapefruit", "Pineapple", "Pear" ]
	//for (const auto& Elem : FruitSet)  不可修改
	//for(FString& Elem: FruitSet )
	for (auto& Elem : FruitSet)  //可修改原值
	{
		FPlatformMisc::LocalPrint(
			*FString::Printf(
				TEXT(" \"%s\"\n"),
				*Elem
			)
		);
	}
	// Output:
	// 	"Banana"
	// 	"Grapefruit"
	// 	"Pineapple"
	// 	"Pear"
	// 	"Orange"
	// 	"Kiwi"
	// 	"Melon"
	// 	"Mango"
	for (auto It = FruitSet.CreateIterator(); It; ++It)
	{
		*It += TEXT("12");
		FPlatformMisc::LocalPrint(*FString::Printf(TEXT("(%s)\n"), *(*It)));
	}

	for (auto It = FruitSet.CreateConstIterator(); It; ++It)
	{
		FPlatformMisc::LocalPrint(*FString::Printf(TEXT("(%s)\n"),*(*It)));
	}
}
相关推荐
程序员二叉12 小时前
【Java】 异常高频面试题精讲 | 易错点+对比总结
java·开发语言·面试
玖玥拾12 小时前
C/C++ 基础笔记(十四)多态与模板编程
c语言·c++·多态·模板
周航宇JoeZhou12 小时前
JB3-9-SpringAI(二)
java·ai·agent·多智能体·调度·智能体·观察
好家伙VCC12 小时前
Web Components主题热切换方案揭秘
java·前端
慕木沐12 小时前
Google ADK Java 1.0版本 核心机制与实战 Demo
java·开发语言·python
Roann_seo%12 小时前
C++文件操作完全指南:从文本读写到二进制文件处理
开发语言·c++
坚果派·白晓明13 小时前
【鸿蒙PC】SDL3 适配:AtomCode + Skills 快速集成 NAPI 测试工具
c++·华为·ai编程·harmonyos·atomcode
焦虑的说说13 小时前
秒杀系统设计方案
java
许彰午13 小时前
30_Java Stream流操作全解
java·windows·python
qq_25183645714 小时前
基于java Web网络订餐系统设计与实现 源码文档
java·开发语言·前端