UE4中的集合:TSet容器
来源:互联网 发布:java 平台 ruby 编辑:程序博客网 时间:2024/06/03 22:52
好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集。
一、TSet<T>是什么
UE4中,除了TArray动态数组外,还提供了各种各样的模板容器。这一节,我们就介绍集合容器——TSet<T>。类似于TArray<T>,尖括号里面的T是模板类型,可以是任何C++类型。一个集合表示了一组互不重复的数据元素。比如TSet<float>表示了一组float集合,TSet<FString>表示了一组FString集合。
二、创建和填充集合
因为这些容器在设计的时候考虑到一致性,所以后面你在学习各种各样的容器,你都会发现它们都具有相同或相似的函数,调用方法也是大同小异。类似TArray,TSet也有Add函数和Emplace函数,举个例子:
1
2
3
4
5
6
TSet<
int
> set;
set.Add( 1 );
set.Add( 2 );
set.Emplace( 3 );
set.Add( 1 );
// 这个操作虽然可以编译运行,但是因为其元素已经存在,所以不会对现有集合发生影响
set.Emplace( 2 );
// 同上
注意,集合的内部数据结构是二叉树,而不是简单地按编号排序的,因此不能通过方括号[]来访问集合中的元素。
1
//set[0] = 4; //试图通过[]操作符来访问集合元素,但这样的操作是非法的
Tset中也有类似于TArray的Push函数,但是不叫Push,那就是Append函数,用法也是和Push一样的。
1
2
void
Append(
const
TArray< ElementType > & InElements )
void
Append( TArray< ElementType > && InElements )
三、迭代集合
因为TSet不能通过[]来访问容器里面的元素,所以也不能通过数值来迭代集合。因此我们要通过迭代器来访问集合:
1
2
3
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 )
示例:
1
2
3
4
5
6
7
8
9
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}
容器的功能可谓非常强大的,上面只是列举其常用的一二,在官方的文档中有全面的介绍。同时我们也认识到,容器的学习也是非常简单的,只要多加练习和查询文档便可。
感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。博主网址:http://www.cnblogs.com/majianchao/如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:1145356699@qq.com。本博客为博主原创,欢迎转载,但必须注明博客来源。更多关于游戏开发的内容也可关注微信公众号:微浪游戏
0 0
- UE4中的集合:TSet容器
- UE4中的集合:TSet容器
- [unreal4入门系列之十六] UE4中的集合:TSet容器
- 3D游戏开发之UE4中的集合:TSet容器
- tset
- tset
- tset
- TSET
- TSET
- TSET
- UE4中的单映射:TMap容器
- UE4中的动态数组:TArray容器
- UE4中的单映射:TMap容器
- Java中的ArrayList集合容器
- 浅析java中的集合类(容器)
- [unreal4入门系列之十五] UE4中的动态数组:TArray容器
- 容器|集合
- UE4中的数据保存
- QTcpSocket的一次奇异之旅
- ubuntu相关
- NYOJ1236 第八届acm省赛 A挑战密室
- Integer问题
- 【洛谷P2722 USACO】 总分 01背包模板
- UE4中的集合:TSet容器
- Codeforce 712A Memory and Crow
- LeetCode 2. Add Two Numbers
- 字母图形
- html单元块fieldset
- leetcode--110. Balanced Binary Tree
- HDU - 1087----Super Jumping! Jumping! Jumping!
- android中的Intent
- Docker -- 系统整洁之道 -- 1