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}
容器的功能可谓非常强大的,上面只是列举其常用的一二,在官方的文档中有全面的介绍。同时我们也认识到,容器的学习也是非常简单的,只要多加练习和查询文档便可。
UE4中的集合:TSet容器的更多相关文章
- 3D游戏开发之UE4中的集合:TSet容器
好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容 ...
- [UE4]集合:TSet容器
一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容器——TSet<T>.类似于TArray<T>, ...
- UE4中的单映射:TMap容器
一.TMap<T>是么 TMap<T>是UE4中的一种关联容器,每个键都关联着一个值,形成了单映射关系.因此你可以通过键名来快速查找到值.此外,单映射要求每个键都是唯一的.类似 ...
- JAVA中的集合容器操作类
目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...
- [UE4]单映射:TMap容器,字典表
一.TMap是什么 TMap是UE4中的一种关联容器,每个键都关联着一个值,形成了单映射关系.因此你可以通过键名来快速查找到值.此外,单映射要求每个键都是唯一的. 二.创建和填充单映射 如果你想创建一 ...
- UE4 中的 C++ 编程介绍
https://docs.unrealengine.com/latest/CHN/Programming/Introduction/index.html UE4 中的 C++ 编程介绍 Unreal ...
- UE4中C++编程(一)
一: C++工程和Gameplay框架 GameInstance 它适合放置独立于关卡的信息,比如说显示UI. GameMode 表示游戏玩法, 包含游戏进行的规则和胜利条件等等信息,游戏模式是和关卡 ...
- Java中的集合框架
概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...
- UE4中使用数据表(Data Table)
本文依据官方文档数据驱动游戏性元素整理而来. 做过游戏的应该都清楚,如果游戏稍微有点规模,那么使用数据驱动来做游戏一般是必不可少的一步,一般也就是策划通过本表的方式来解决.下面我们来简单说一下UE4中 ...
随机推荐
- InnoDB的行溢出数据,Char的行结构存储
行溢出数据 InnoDB存储引擎可以将一条记录中的某些数据存储在真正的数据页面之外,即作为行溢出数据.一般认为BLOB.LOB这类的大对象列类型的存储会把数据存放在数据页面之外.但是,这个理解有点偏差 ...
- STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解
STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解 STM32的优先级NVIC_PriorityGroupConfig的理解及其使用 STM32中断优先级彻底讲解 S ...
- lPC1788的GPIO驱动
#include "led.h" void led_init(void) { //p1.14 p0.16 p1.13 p4.27 LPC_SC->PCONP |= (1< ...
- IOS开发者证书申请及应用上线发布详解(2014版)
其实一直以来我都想做一个最齐全的上传应用到appstore的教程,但一直狠不下心,今天凌晨2点12分,我鼓起勇气写教程,来吧不多说.登录开发者中心:http://developer.apple.com ...
- flask-sqlalchemy relationship
http://www.ergo.io/blog/sqlalchemy-relationships-from-beginner-to-advanced class Cabinet(db.Model): ...
- C语言-while循环
循环是结构化程序设计的基本结构之一,它和顺序控制.选择结构共同作为各种复杂程序的基本构造单元(摘自谭浩强的<C程序设计>. 一.while循环: 1.使用while循环控制输出0到9十个数 ...
- eclipse安装maketplace插件
对于默认eclipse是没有marketplace插件的,但是marketplace确实是非常好用的,可以在上面下载各种插件. 1.Help-->Install new Software 2.输 ...
- ABP架构解析
ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
- 【python之路11】集合数据类型(set)
集合数据类型(set):集合是不重复的无需序列 1.集合数据类型的创建 a = {11,22,33} #或 a = set() #创建空集合,不能用a={},这样创建的是字典类型 2.集合转换(将可迭 ...
- UVa 459 - Graph Connectivity
题目大意:给你一个无向图的顶点和边集,让你求图中连通分量的个数.使用并查集解决. #include <cstdio> #include <cstring> #define MA ...