[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( );
set.Add( );
set.Emplace( );
set.Add( );// 这个操作虽然可以编译运行,但是因为其元素已经存在,所以不会对现有集合发生影响
set.Emplace( );// 同上
注意,集合的内部数据结构是二叉树,而不是简单地按编号排序的,因此不能通过方括号[]来访问集合中的元素。
//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( -, .f, FColor::White, FString::FromInt( *it ) );
}
四、两个集合的操作
1) 交集
TSet中的Intersect函数提供了计算出两个集合的交集操作,下面是其函数声明:
TSet Intersect( const TSet & OtherSet )
示例:
TSet<int> X;
X.Add( );
X.Add( );
X.Add( );
TSet<int> Y;
Y.Add( );
Y.Add( );
Y.Add( );
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}
容器的功能可谓非常强大的,上面只是列举其常用的一二,在官方的文档中有全面的介绍。同时我们也认识到,容器的学习也是非常简单的,只要多加练习和查询文档便可。
[UE4]集合:TSet容器的更多相关文章
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
- Java集合(容器)学习
1.集合和数组有什么区别,为什么使用集合而不用数组? 相同点:集合和数组都可以存储多个对象,对外作为一个整体存在. 数组的缺点: 长度必须在初始化时指定,且固定不变: 数组采用连续存储空间,删除和添加 ...
- 《回炉重造 Java 基础》——集合(容器)
整体框架 绿色代表接口/抽象类:蓝色代表类. 主要由两大接口组成,一个是「Collection」接口,另一个是「Map」接口. 前言 以前刚开始学习「集合」的时候,由于没有好好预习,也没有学好基础知识 ...
- UE4中的集合:TSet容器
好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容 ...
- 3D游戏开发之UE4中的集合:TSet容器
好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容 ...
- Java基础知识之集合(容器)简介
JAVA的集合体系,主要由Collection接口,Map接口,Iterator接口和操作集合的工具类Collections组成.其中的Iterator只是一个迭代器,真正的容器则派生自Collect ...
- Java集合框架——容器的快速报错机制 fail-fast 是什么?
前言:最近看 java 集合方面的源码,了解到集合使用了 fail-fast 的机制,这里就记录一下这个机制是什么,有什么用,如何实现的. 一.fail-fast 简介 fail-fast 机制,即快 ...
- [19/03/25-星期一] 容器_Collection(集合、容器)之Set(集合、安置,无顺序不可重复)
一.概念&方法 Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致.. Set容器特点:无序.不可重复.无序指Set中的元素没有索引,只能遍 ...
- [19/03/24-星期日] 容器_Collection(集合、容器)之List(表,有顺序可重复)
一. 概念&方法 Collection 表示一组对象,它是集中.收集的意思.Collection接口的两个子接口是List.Set接口. 由于List.Set是Collection的子接口,意 ...
随机推荐
- RSA签名验证无法通过,检查以下部分
RSA签名验证无法通过,检查以下部分:1.是否和上游交换公钥,提交给上游的公钥是否配置正确并生效2.检查加密方式是SHA1还是MD5,是否跟上游一致3.上游采用的是否是base64SafeUrl的方式 ...
- 部署python3.6下的django
首先是安装好nginx,配置web目录,配置文件在confi.d中, server { # the port your site will be served on listen ; # the do ...
- CODE大全大量Flash网站收藏
我的博客:CODE大全:www.codedq.net:业余草:www.xttblog.com:爱分享:www.ndislwf.com或ifxvn.com. http://www.wallop.com在 ...
- 【error】no type named ‘type’ in ‘class std::result_of<void
Q: std::thread fs_module(fs_process, prob_orig, fb_sz, line_num, probp, plabel, std::ref(confidence_ ...
- HihoCoder - 1781: Another Bubble Sort (冒泡排序&逆序对)
Sample Input 3 9 8 7 5 1 9 2 6 4 3 1 2 3 4 5 6 7 8 9 9 8 7 5 1 9 2 6 4 3 1 2 5 4 3 6 7 8 9 9 8 7 5 1 ...
- 20155328 2016-2017-2 《Java程序设计》第5周学习总结
教材学习内容总结 程序设计本身的错误,建议使用Exception或其子类实例来表现. Java中所有错误都会被打包成对象. 如果父类异常对象在子类异常对象前被捕捉,则catch子类异常对象的区块将永远 ...
- 51Nod 1066:Bash游戏 (巴什博弈)
1066 Bash游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次最少拿1颗,最多拿K颗,拿到 ...
- HDU 4681 string 求最长公共子序列的简单DP+暴力枚举
先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...
- 【spring data jpa】好文储备
[spring data jpa]带有条件的查询后分页和不带条件查询后分页实现 : https://blog.csdn.net/lihuapiao/article/details/48782843 ...
- BKL 大内核锁
BKL 大内核锁 BKL是一种递归锁.一个进程可以多次请求一个锁,并不会像自旋锁那么产生死锁. BKL可以在进程上下文中. BKL是有害的. 在内核中不鼓励使用BKL.一个执行线程可以递归的请求锁lo ...