TArray
TArrayTArray是虚幻C++中的动态数组TArray 特点:速度快,内存消耗小,安全性高。
并且TArray所有的元素均完全为相同类型,不能进行不同元素类型的混合
//Array数组
//增
MyArray.Add(10);//将元素添加到数组中
MyArray.Add(20);
MyArray.Add(30);
//如果存在相同元素则不添加,如果不存在则添加
MyArray.AddUnique(20);
MyArray.AddUnique(40);
//调用函数printF
PrintF();
//删
MyArray.Remove(20);//删除所有20的值
MyArray.RemoveAt(0);//移除索引值为0的元素
MyArray.RemoveSingle(10);//移除首个匹配到的元素
MyArray.Empty();//清空全部数组
MyArray.Reset();//重置全部元素所有变为0
//改
MyArray.Insert(60, 0);//在0号位置插入一个元素60\
int32& temp = MyArray[0];//取出0索引
temp = 50;//这样也能修改元素的值
//查
MyArray.Contains(10);//查找是否包含某个元素
MyArray.Find(10);//查找到的第一个元素返回下标
MyArray.FindLast(10);//反向查找第一个匹配的元素,返回下标
输出
void AMyGameMode::PrintF()
{
//用迭代器遍历数组打印出来
for (auto It = MyArray.CreateConstIterator(); It; It++)
{
UE_LOG(LogTemp, Warning, TEXT("%d"), *It);
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT("%d"), *It));
}
}
TMap
TMap键值对容器,里面数据是成对出现的(key,value),value值通过key值获取,且key值不能重复,key值唯一
//TMap
//增
MyMap.Emplace(0, 1);
MyMap.Emplace(1, 2);
MyMap.Emplace(2, 3);
PrintMap();
//删
MyMap.Remove(0);//移除key值为0的元素
MyMap.Empty();//清空数据
//查找
MyMap.Contains(1);//查找匹配的Key值是否存在找到返回
int32* isFind =MyMap.Find(6);//查找匹配的Key值是否存在,找到返回是指针,只进行一次
const int32* isFind2=MyMap.FindKey(2);//通过查找Vaule的值查找Key返回的是指针
//分别获取Keys和Values
TArray<int32>TestKeys;
TArray<int32>TestValues;
MyMap.GenerateKeyArray(TestKeys);
MyMap.GenerateKeyArray(TestValues);
输出
void AMyGameMode::PrintMap()
{
for (auto& TestMap : MyMap)
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT("key:%d" "vaule:%d"),TestMap.Key, TestMap.Value));
UE_LOG(LogTemp, Warning, TEXT("key: %d vaule : %d"),TestMap.Key,TestMap.Value);
}
}
笔记总结来源于:【【虚幻5】UE5C++零基础全网全流程开发从入门到进阶教程合集(持续跟新中)】https://www.bilibili.com/video/BV1Dc411f7nx?vd_source=90cb1ac44856e5e826e2bee8aa9d8a41