<UEC++容器>

1.容器是方便存储数据的载体

2.虚幻提供了三种容器:TArry,TMap,TSet。虚幻提供的容器都是同质容器,只能用来存储相同类型的数据。三种容器具备不同的特性,针对不同的特性,我们可以根据使用场景选择操作的容器.

3.虚幻中的容器使用泛型特性进行构建。

TArray 特点: 速度快,内存消耗小,安全性高
TArray为同质容器:其所有元素均完全为相同类型。不能进行不同元素类型的混合!

TArray被设计成值类型 所以无法被继承
不能使用new和delete 在堆上进行创建销毁。元素也是数值类型,为容器拥有。TArray被销毁时元素也会被销毁。TArray不存在共享状态.

构建TArray
TArray<类型名>变量

TArray<FString> Array;

使用例子:
.h文件

TArray<USceneComponent*> PipeGroup;

.CPP文件


	
	for (int32 i = 0; i < 3; i++)
	{
		FString GroupRootName = FString::Printf(TEXT("RootGroup%d"), i);

		USceneComponent * PGroup = CreateDefaultSubobject<USceneComponent>(*GroupRootName);


		FString GroupPipUp = FString::Printf(TEXT("PiUp%d"), i*2);
		UPaperSpriteComponent * UpCom = CreateDefaultSubobject<UPaperSpriteComponent>(*GroupPipUp);

		FString GroupPipDown = FString::Printf(TEXT("PiDown%d"),i*2 + 1);
		UPaperSpriteComponent * DownCom = CreateDefaultSubobject<UPaperSpriteComponent>(*GroupPipDown);

		PGroup->SetupAttachment(RootComponent);
		UpCom->SetupAttachment(PGroup);
		DownCom->SetupAttachment(PGroup);

		UpCom->SetSprite(UpPipeMesh.Object);
		DownCom->SetSprite(DownPipeMesh.Object);

		UpCom->SetRelativeLocation(FVector(0,0,-220));
		DownCom->SetRelativeLocation(FVector(0,0,190));

		PipeGroup.Add(PGroup);

	}

容器在构建时,不要构建为堆对象!直接构建成栈对象!
由于模板类,在构建时必须指出存储数据类型

遍历
//这个变量名是自己定义的

for(auto &变量名::Array) 

使用方法

for(auto &变量名::Array) {
GEngine->AddOnScreenDebugMessage(-1, 2, FColor::Green,*变量名);
}

迭代器方法遍历:

容器的定义

TArray<FString> Myarr;

	for (int32 i = 0; i < 3; i++)
	{
		FString Mydata = FString::Printf(TEXT("Number%d"), i);
		Myarr.Add( Mydata);
	}

迭代器遍历

	for (auto ite = Myarr.CreateIterator();ite; ++ite)
	{
		GEngine->AddOnScreenDebugMessage(-1, 2, FColor::Green,*ite);

	}

TArray容器查找内容

Myarr.Contains(TEXT("查找内容")); //返回值是bool类型 
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐