TSet

  • TSet也是键值容器和TMap类似,但速度快,无需提供单独的键进行关联元素,不允许有重复的键。
  • TSet 也是值类型,支持常规复制、赋值和析构函数操作,以及其元素较强的所有权。集合被销毁时,其元素也将被销毁。键类型也必须是值类型

与TArray的区别:

  • TSet是KV容器
  • TSet不保证数据填充顺序。
  • TSet数据存储时无法重复存储,TArray可以

构建、添加数据:

1
2
3
4
5
6
7
TSet<FString> set;
set.Add(TEXT("set01"));// 添加内容

TSet<FString> set2;
set2.Add(TEXT("set02"));

set.Append(set2); // 合并操作

遍历:

1
2
3
4
5
6
7
8
9
10
11
12
for (auto& Item : set)
{
Item = TEXT("cg01");// 修改值
}
for (auto It = set.CreateIterator(); It; ++It)
{
*It = TEXT("cg01");// 修改值
}
for (auto It = set.CreateConstIterator(); It; ++It)
{
*It; // 可获取但无法修改
}

常用查询函数:

1
2
3
4
5
6
7
set.Num(); // 获取容器中元素的数量
// 检查是否包含给定的键值 返回布尔值
set.Contains(TEXT("set01"));
// 返回指向元素的指针,没找到返回空
set.Find(TEXT("set01"));
// 将TSet容器转为TArray容器
set.Array();

常用移除函数:

1
2
3
set.Remove(TEXT("set01")); // 使用给定的值内容
set.Empty(); // 清空容器,释放空间
set.Reset(); // 移除元素,但是不释放空间