TSet
TSet是一种快速容器类,用于在排序不重要的情况下存储唯一元素。
一、创建
二、填充元素
1、Add()和Emplace():添加元素
2、Append():添加其他TSet中的多个元素
以上同TArray一样
FruitSet.Add(TEXT("Banana"));
FruitSet.Add(TEXT("Grapefruit"));
FruitSet.Add(TEXT("Pineapple"));
FruitSet.Add(TEXT("Pear"));
FruitSet.Add(TEXT("Banana"));
// FruitSet = [Banana, Grapefruit, Pineapple, Pear]
三、迭代
同TMap一样
// auto 范围遍历
for (auto& Elem : FruitSet)
{
Elem...;
}
// 迭代器迭代
for (auto Iter = FruitSet.CreateIterator(); Iter; ++Iter) // CreateConstIterator 只读迭代器
{
*Iter...;
}
四、查询
1、Num():查询TSet元素个数
int32 Count = FruitSet.Num(); // Count = 4
2、Contanis():查询是否包含某个元素
bool bHasBanana = FruitSet.Contains(TEXT("Banana")); // bHasBanana = true
bool bHasLemon = FruitSet.Contains(TEXT("Lemon")); // bHasLemon = false
3、[]、Find():查找某个元素
FSetElementId 结构体可查找集合中某个键的索引。然后,就可使用该索引与 运算符[] 查找元素
FSetElementId BananaIndex = FruitSet.FindId(TEXT("Banana"));
FPlatformMisc::LocalPrint( // 打印 Banana
*FString::Printf(
TEXT(" \"%s\"\n"),
*FruitSet[BananaIndex]
)
);
FSetElementId LemonIndex = FruitSet.FindId(TEXT("Lemon"));
FPlatformMisc::LocalPrint( // 报错
*FString::Printf(
TEXT(" \"%s\"\n"),
*FruitSet[LemonIndex]
)
);
Find()同TMap一样,返回所查找元素的指针,如果不存在,返回nullptr
FString* PtrBanana = FruitSet.Find(TEXT("Banana"));
FString* PtrLemon = FruitSet.Find(TEXT("Lemon")); // 空指针
4、Array():根据TSet元素返回一个数组
TArray<FString> FruitArray = FruitSet.Array(); // FruitArray = [Banana, Grapefruit, Pineapple, Pear]
五、移除
1、Remove():移除元素
- 可根据
FSetElementId移除指定元素 - 可根据元素值移除指定元素,返回移除元素个数
2、Empty()和Reset():移除全部元素
同TMap一样
六、排序
基本同TMap一致
FruitSet.Sort([](const FString& A, const FString& B) {
return A > B;
});
// FruitSet = [Pear, Grapefruit, Banana]
FruitSet.Sort([](const FString& A, const FString& B) {
return A.Len() < B.Len();
});
// FruitSet = [Pear, Banana, Grapefruit]
七、运算符
1、赋值运算符=
同TArray一样,是一次深拷贝
2、MoveTemp
同TArray一样,支持移动语义MoveTemp,移动后,源映射为空
八、Slack(空闲容量)
1、Reverse():分配内存
同TArray一样,分配内存,无需添加元素,如果分配的内存比当前小,则无效。
2、Shrink()和Compact():移除所有Slack
Shrink() 将从容器的末端移除所有slack,如果映射中间存在slack则无法移除,首先应调用 Compact()或CompactStable() 函数,将空白空间组合在一起,再调用Shrink() ,CompactStable 可在合并空元素时保持元素的排序。
九、KeyFuncs
同TMap一致