一、TSet<T>是什么

UE4中,除了TArray动态数组外,还提供了各种各样的模板容器。这一节,我们就介绍集合容器——TSet<T>。类似于TArray<T>,尖括号里面的T是模板类型,可以是任何C++类型。一个集合表示了一组互不重复的数据元素。比如TSet<float>表示了一组float集合,TSet<FString>表示了一组FString集合。

二、创建和填充集合

因为这些容器在设计的时候考虑到一致性,所以后面你在学习各种各样的容器,你都会发现它们都具有相同或相似的函数,调用方法也是大同小异。类似TArray,TSet也有Add函数和Emplace函数,举个例子:

TSet<int> set;
set.Add( 1 );
set.Add( 2 );
set.Emplace( 3 );
set.Add( 1 );// 这个操作虽然可以编译运行,但是因为其元素已经存在,所以不会对现有集合发生影响
set.Emplace( 2 );// 同上

注意,集合的内部数据结构是二叉树,而不是简单地按编号排序的,因此不能通过方括号[]来访问集合中的元素。

//set[0] = 4; //试图通过[]操作符来访问集合元素,但这样的操作是非法的

Tset中也有类似于TArray的Push函数,但是不叫Push,那就是Append函数,用法也是和Push一样的。

void Append( const TArray< ElementType > & InElements )
void Append( TArray< ElementType > && InElements )

三、迭代集合

因为TSet不能通过[]来访问容器里面的元素,所以也不能通过数值来迭代集合。因此我们要通过迭代器来访问集合:

for( TSet<int>::TIterator it = set.CreateIterator(); it; ++it ){GEngine->AddOnScreenDebugMessage( -1, 40.f, FColor::White, FString::FromInt( *it ) );
}

四、两个集合的操作

1) 交集

TSet中的Intersect函数提供了计算出两个集合的交集操作,下面是其函数声明:

TSet Intersect( const TSet & OtherSet )

示例:

TSet<int> X;
X.Add( 1 );
X.Add( 2 );
X.Add( 3 );
TSet<int> Y;
Y.Add( 2 );
Y.Add( 3 );
Y.Add( 4 );
TSet<int> intersection = X.Intersect(Y); // intersection的内容为{2,3}

2) 并集

TSet中的Union函数提供了计算出两个集合的并集操作,下面是其函数声明:

TSet Union( const TSet & OtherSet )

示例:

TSet<int> uni = X.Union(Y); // uni的内容为{1,2,3,4}

容器的功能可谓非常强大的,上面只是列举其常用的一二,在官方的文档中有全面的介绍。同时我们也认识到,容器的学习也是非常简单的,只要多加练习和查询文档便可。

转载于:https://www.cnblogs.com/timy/p/8641789.html

[UE4]集合:TSet容器相关推荐

  1. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  2. 《回炉重造 Java 基础》——集合(容器)

    整体框架 绿色代表接口/抽象类:蓝色代表类. 主要由两大接口组成,一个是「Collection」接口,另一个是「Map」接口. 前言 以前刚开始学习「集合」的时候,由于没有好好预习,也没有学好基础知识 ...

  3. 蓝桥杯JAVA-7.集合(容器)在竞赛中的使用

    目录 个人博客 www.tothefor.com 蓝桥杯复习知识点汇总 介绍一些在竞赛中会用到的集合(容器),和使用方法.具体一些的用法可见<JAVA基础学习-集合> 而本文是快速介绍和一 ...

  4. [unreal4入门系列之十六] UE4中的集合:TSet容器

    一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容器--TSet<T>.类似于TArray<T>, ...

  5. ue4集合类型_3D游戏开发之UE4中的集合:TSet容器

    好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容器--TSet.类 ...

  6. ue4集合类型_UE4粒子系统渲染管线概述

    本文基于UE4版本4.25.3,对Cascade粒子系统的移动端渲染管线进行简单的概括和描述. Game Thread部分 粒子系统Actor被Spawn(或所在的Level被加载)的时候,UPart ...

  7. ue4集合类型_UE4-Sockets

    Sockets(套接字) 套接字为通信的端点.通过网络通信的每对进程需要使用一对套接字. 套接字组成: IP地址 + 端口号 套接字采用客户机--服务器架构. 服务器通过监听指定端口,来等待客户请求. ...

  8. ue4集合类型_UE4.22 Subsystem分析

    2019年4月2日,UE4.22版本正式发布,其中包含了很多新的特性,Subsystem(子系统)便是其中之一,这篇文章将分析Subsystem的用法以及实现原理. 概述 Subsystem(子系统) ...

  9. java集合(容器)

    一. 集合类带来的好处 降低编程难度:在编程中会经常需要链表.向量等集合类,如果自己动手写代码实现这些类,需要花费较多的时间和精力.调用Java中提供的这些接口和类,可以很容易的处理数据. 提升程序的 ...

最新文章

  1. AprilTag中的g3d.h和g2d.c文件
  2. 他们拿走腾讯百万奖金,我有点泪目
  3. tomcat 配置方法
  4. JSON数据格式---JSON语法规则、JSON文件
  5. php varexport,PHP函数补完:var_export()
  6. 最开始教学html5的人,初识html5的个人看法
  7. golang mysql连接池原理_[Go] golang实现mysql连接池
  8. Python -- 大小写转换
  9. 从零在阿里云服务器上部署一个Springboot博客网站
  10. ubuntu 设置定时任务
  11. 【深入浅出精华版视频】-刘意day13思维导图整理
  12. 野火i.MX Linux开发实战指南
  13. TextWatcher实现一键清空EditText
  14. 假AI?如何辨识 AI 界的snake oil
  15. 几何向量:向量乘法(叉乘)
  16. win10解决设置默认打开方式不生效问题
  17. vscode超炫敲击特效嘎嘎帅!!!
  18. 心得|Python新手如何渡过小白期,不再当菜鸟程序员?
  19. 新装Win10全方面调优【彻底禁用Win10更新/防火墙/Defender/通知,任务栏优化等】
  20. 【Educoder】Python学习记录(二)

热门文章

  1. iOS微博项目(七)发微博和定位
  2. 大型网站技术架构03
  3. Java基础之写文件——缓冲区中的多条记录(PrimesToFile3)
  4. javascript --- 手写Promise、快排、冒泡、单例模式+观察者模式
  5. linux --- 基础指令
  6. vue --- v-text、v-show、v-if、v-else
  7. 一张图学习常见this的指向
  8. Exchange2013恢复已删除用户邮箱
  9. _M_invoke(_Index_tuple_Indices...)
  10. expect脚本的简单应用