TArray小结

1.
增加:
1.1
初始化
TArray<int32> IntArray;
IntArray.Init(10, 5);
// IntArray == [10,10,10,10,10]

1.2
增加新元素
TArray<FString> StrArr;
StrArr.Add(TEXT("World"));
或者:
StrArr.Emplace(TEXT("World"));
说明:
1.2.1
建议使用Add(),虽然官方说Emplace()能省一次构造临时FString,不过还是建议使用接口含义更简洁、明确的Add()。
1.2.2
AddUnique(),可以避免有效元素判断的代码,代码会更简洁。
1.2.3
不过我也觉得挺扯的:
其实我也不懂为什么Unreal不使用Add()这种名称更简洁、明确,并且功能更优的函数名称,代替Emplace()?
哪个大神能告诉下,Emplace()这个函数单独列出来,有什么含义吗?
所以建议使用Add()。

1.3
预留多元素位置
Reserve()
说明:
如果数组能预先知道元素数量,并且元素数量为大量(超过32个),并且单元素的体积比较大时,可以考虑使用Reserve()。

2.
删除:
2.1
通过索引删除
ValArr.RemoveAt(2)

2.2
删除最后的元素
StrArr.Pop();

2.3
删除第一个匹配元素
ValArr.RemoveSingle(30);

2.4
清空
SlackArray.Empty();

3.
修改:
3.1
直接访问
FString* StrPtr = StrArr.GetData();
StrPtr[0] == "!"
StrPtr[1] == "of"

4.
查询:
4.1
遍历
for (int32 Index = 0; Index != StrArr.Num(); ++Index)
{
    JoinedStr += StrArr[Index];
    JoinedStr += TEXT(" ");
}

4.2
排序
StrArr.Sort([](const FString& A, const FString& B) {
    return A.Len() < B.Len();
});

4.3
查找(找不到返回INDEX_NONE)
int32 Index = StrArr.Find(TEXT("Hello"));

4.4
判断索引是否有效
bool bValid = StrArr.IsValidIndex(0);

4.5
得到最后一个元素
FString ElemEnd = StrArr.Last();

参考:
1.
《TArray:虚幻引擎中的数组》
https://docs.unrealengine.com/zh-CN/Programming/UnrealArchitecture/TArrays/index.html

2.
《UE4容器TArray、TMap的使用》
https://blog.csdn.net/yangxuan0261/article/details/52078303/

3.
《UE4[C++]TArray的快速优化》
https://zhuanlan.zhihu.com/p/72227908

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值