코드 리뷰
[UE_5] TArray
WhNi
2024. 5. 31. 14:28
TArray: 언리얼 엔진의 배열
docs.unrealengine.com
Dynamic Array인 자료구조이며, c++ STL의 vector와 유사함.
중간에 데이터를 추가하는것만 아니면, 탐색이 빠른 자료구조.
데이터가 커지면 탐색이 느려지긴 함.
함수 기능
Emplace 를 통해서 배열 끝에 삽입 가능.
AddUnique 는 기존 컨테이너에 원소가 존재하지 않는 경우에만 추가
StrArr.AddUnique(TEXT("!"));
// StrArr == ["Hello","World","of","Tomorrow","!"]
StrArr.AddUnique(TEXT("!"));
// StrArr is unchanged as "!" is already an element
SetNum을 통해서 해당 원소에 번호를 부여하고, Set한 번호가 원소보다 많으면 공백으로 추가함
StrArr.SetNum(8);
// StrArr == ["Hello","Brave","World","of","Tomorrow","!","",""]
Sort 는 데이터의 길이 별로 정렬됨.
Num 기능을 통해서 해당 원소의 갯수를 파악 가능
GetData()를 통해서 포인터를 얻어서 사용할 수도 있음
FString* StrPtr = StrArr.GetData();
// StrPtr[0] == "!"
// StrPtr[1] == "of"
// ...
// StrPtr[5] == "Tomorrow"
// StrPtr[6] - undefined behavior
Find를 통해서 원소를 찾을 수 있음
int32 Index;
if (StrArr.Find(TEXT("Hello"), Index))
{
// Index == 3
}
Contains를 통해서 특정 원소가 들어가있는지도 확인 가능
bool bHello = StrArr.Contains(TEXT("Hello"));
bool bGoodbye = StrArr.Contains(TEXT("Goodbye"));
// bHello == true
// bGoodbye == false
MoveTemp를 통해서 배열 이동이 가능함, 원본 배열은 공백으로 남음
ValArr3 = MoveTemp(ValArr4);
// ValArr3 == [5,2,3,1,2,3]
// ValArr4 == []
Empty 를 통해서 모든 데이터를 제거함
ValArr2.Empty();
// ValArr2 == []