[UE4]集合:TSet容器

一、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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【汇总】flash单个文件上传

之前有朋友给我发送email&#xff0c;询问我是否有单个文件上传的源代码&#xff0c;因为当时写这个好像是在09年&#xff0c;所以放哪了一时也没找着。后来整理硬盘的时候&#xff0c;找到了源码&#xff0c;所以决定来个汇总&#xff08;之前写过的关于flashjs上传文件的例子…

2018.3.24 struct

好了今天听完了struct&#xff0c;感觉也差不多了&#xff0c;后面的视频不想听了&#xff0c;io啊预处理啊什么的用时候现学就好了。主要是就这么光听却没有作业可做真的有点不爽。 明天开始15-213&#xff0c;反正手头也有c primer plus了&#xff0c;后面遇到什么问题看书就…

一直苦于没有好的资产管理软件,GLPI能解决吗?

一直苦于没有好的资产管理软件&#xff0c;正好看到网上文章有介绍glpi资产管理开源软件 在此做个记录&#xff0c;有时间一定要测试一下 &#xff08;1&#xff09;资产管理工具GLPI 官网 http://www.glpi-project.org/ GLPI是法语Gestionnaire libre de parc informatique的…

weka的java环境配置_windows下安装和配置Weka

Weka是一款免费的&#xff0c;非商业化的&#xff0c;基于java环境下的开源的机器学习以及数据挖掘软件。Weka里含有各种数据挖掘工具&#xff1a;数据预处理&#xff0c;分类与回归&#xff0c;聚类&#xff0c;关联规则和可视化工具。一、安装weka我们首先需要到weka官网上下…

Windows部署服务WDS实例

一&#xff1a;概述<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Windows&#xff08;Windows Deployment Services&#xff09; 部署服务适用与大中型网络中的计算机操作系统部署。可以使用 Windows 部署服务来管理映像以及无…

JAVA----爬虫(一)JSoup

jsoup 是一款Java 的HTML解析器&#xff0c;可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API&#xff0c;可通过DOM&#xff0c;CSS以及类似于jQuery的操作方法来取出和操作数据。 官方api:https://jsoup.org/ 一、jsoup功能 简单的例子&#xff1a;抓取wiki的…

java语言模拟_Java语言模拟操作系统.doc

河北大学2010级操作系统课程设计论文PAGEPAGE 27装订线装订线(指导教师用表)学 生 姓 名指 导 教 师论文(设计)题目Java语言模拟操作系统主要研究(设计)内容使用java语言&#xff0c;采用多到程序设计方法基本上实现并模拟了单用户操作系统。该操作系统包括四部分内容&#xff…

极速理解设计模式系列:22.状态模式(State Pattern)

四个角色&#xff1a;抽象状态类(State)、具体状态类(ConcreateState)、情景类(Context)、客户端(Client) 抽象状态类(State):提供一个与情景类有关的State行为。 具体状态类(ConcreateState):实现这个行为&#xff0c;实现一个状态。 情景类(Context):维护一个State的实例对象…

485. Max Consecutive Ones

原题链接&#xff1a;https://leetcode.com/problems/max-consecutive-ones/description/ 这道题目级别为easy&#xff0c;实际做起来也是so easy&#xff1a; /*** Created by clearbug on 2018/2/26.*/ public class Solution {public static void main(String[] args) {Solu…

[转]extern使用方法总结

Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义。谨记&#xff1a;声明可以多次&#xff0c;定义只能一次。在使用中&#xff0c;要形成一种风格。 函数的声明extern关键词是可有可无的&#xff0c;因为函数本身不加修饰的话就是extern的。但是引用的时候一样是…

java 设置pdf 编码格式_Java如何设置PDF文档背景色详解

前言一般生成的PDF文档默认的文档底色为白色&#xff0c;我们可以通过一定方法来更改文档的背景色&#xff0c;以达到文档美化以及保护双眼的作用。 以下内容提供了Java编程来设置PDF背景色的方法。包括&#xff1a;设置纯色背景设置图片背景使用工具Spire.PDF for Java 2.0.3J…

关于strassen矩阵乘法的矩阵大小不是2^k的形式时,时间复杂度是否还是比朴素算法好的看法...

原来是n&#xff0c;找到大于等于n且是2^k形式的数m。n*n的矩阵补全为m*m的矩阵&#xff0c;原来的矩阵放在最左上方&#xff0c;其它位置的值为0.朴素方法&#xff1a;n^3现在&#xff1a;m^2.8即m/n需小于e^(3/2.8)2.919才能好&#xff0c;而n<m<2*n&#xff0c;即使用…

UtilSession failed: Prerequisite check CheckSystemSpace space(22288172004) is not availa

如果你在使用OPatch打11.2 GI/CRS上的PSU时遇到了如上错误信息"UtilSession failed: Prerequisite check "CheckSystemSpace" space"则说明你的CRS_HOME所在文件系统的空闲空间不足22g&#xff0c;这会导致OPatch预检测无法通过。 UTIL session.Oracle…

数据库 oracle 设计三范式

一&#xff1a;表中的数据不能重复&#xff0c;每个字段不可再分。2&#xff1a; 建立在第一范式上&#xff0c;表中的非主键字段必须全部依赖主键&#xff0c;不能部分依赖主键3 建立在第二范式基础上的&#xff0c;非主键字段不能传递依赖于主键字段。转载于:https://www.cnb…

java websocket高并发测试_Websocket全讲解。跨平台的通讯协议 !!基于websocket的高并发即时通讯服务器开发。...

本博文&#xff0c;保证不用装B的话语和太多专业的语言&#xff0c;保证简单易懂&#xff0c;只要懂JAVAEE开发的人都可以看懂。 本博文发表目的是&#xff0c;目前网上针对Websocket的资料太散乱&#xff0c;导致初学者的知识体系零零散散&#xff0c;学习困难加大。本博加以整…

C#实现文件下载代码

提供个C#实现文件下载代码  一&#xff0e;概述&#xff1a; 本文通过一个实例向大家介绍用Visual C#进行Internet通讯编程的一些基本知识。我们知道.Net类包含了请求/响应层、应用协议层、传输层等层次。在本程序中&#xff0c;我们运用了位于请求/响应层的WebRequest类以及W…

Cookie 与Session 的区别

Cookie 与Session 的区别&#xff08;转载&#xff09; 原地址: http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html 两个都可以用来存私密的东西&#xff0c;同样也都有有效期的说法。 区别在于&#xff1a;session是放在服务器上的&#xff0c;过期与否取决于…

voyage java_GitHub - yezilong9/voyage: 采用Java实现的基于netty轻量的高性能分布式RPC服务框架...

VoyageOverview采用Java实现的基于netty轻量的高性能分布式RPC服务框架。实现了RPC的基本功能&#xff0c;开发者也可以自定义扩展&#xff0c;简单&#xff0c;易用&#xff0c;高效。Features服务端支持注解配置客户端实现Filter机制&#xff0c;可以自定义Filter基于netty3.…

产品架构开发方法(2011中国软件技术大会)

上周末在国家会议中心举办的2011中国软件技术大会上我做了一个分享&#xff1a;产品架构开发方法。很高兴能在不同的大会上做演讲&#xff0c;但更高兴的是能够结交更多的朋友。 这个演讲内容包括了企业架构、业务分析、软件产品线、产品管理等内容&#xff0c;知识量有点大哦。…

IOS 调用系统照相机和相册

/** * 调用照相机 */ - (void)openCamera { UIImagePickerController *picker [[UIImagePickerController alloc] init]; picker.delegate self; picker.allowsEditing YES; //可编辑 //判断是否可以打开照相机 if ([UIImagePickerController isSourceTypeAvailable:UIImag…