TArray 다음으로 Unreal에서 많이 쓰는 container
TSet하고 비슷한 것이 Hashing key를 이용한 구조를 사용한다는 점
사실 Unreal에는 두 가지 Map이 존재한다.
UPROPERTY(EditAnywhere, Category = MapsAndSets)
TMap<int32, FString> FruitMap;
왠지 SKT의 Tmap이 생각나는데
근데 사실 정렬이 가능하다.
KeySort()와 ValueSort()가 가능
FruitMap.KeySort([](int32 A, int32 B) {
return A > B; // sort keys in reverse
});
// FruitMap == [
// { Key: 9, Value: "Melon" },
// { Key: 5, Value: "Mango" },
// { Key: 4, Value: "Kiwi" },
// { Key: 3, Value: "Orange" }
// ]
FruitMap.ValueSort([](const FString& A, const FString& B) {
return A.Len() < B.Len(); // sort strings by length
});
// FruitMap == [
// { Key: 4, Value: "Kiwi" },
// { Key: 5, Value: "Mango" },
// { Key: 9, Value: "Melon" },
// { Key: 3, Value: "Orange" }
// ]
Value로도 Sort가 가능한 것은 좀 신기하다.
TMap 역시 메모리 할당을 위한 Allocator를 선택할 수 있는데,
이는 Unreal 자료구조의 공통된 특징으로 보인다.
TMultiMap<FString, int32> MyMultiMap;
// 여러 개의 값을 하나의 키에 매핑할 수 있습니다.
MyMultiMap.Add("KeyA", 10);
MyMultiMap.Add("KeyA", 20);
MyMultiMap.Add("KeyB", 30);
MyMultiMap.Add("KeyB", 40);
앞서 Map에서 Key의 중복이 가능해진 경우
TArray<int32> ValuesForKeyA = MyMultiMap.Find("KeyA");
for (int32 Value : ValuesForKeyA)
{
// KeyA에 매핑된 값들을 출력합니다.
UE_LOG(LogTemp, Warning, TEXT("Value for KeyA: %d"), Value);
}
TArray 형태로 하나의 Key에 Value가 저장됨.
https://docs.unrealengine.com/5.3/en-US/map-containers-in-unreal-engine/
Unreal5 - Live Link Face 사용하기 (0) | 2024.04.29 |
---|---|
🪣 UNREAL Containers - TSet (0) | 2024.02.09 |
🪣UNREAL Containers - TArray (0) | 2024.02.09 |
🆎Unreal에서의 StringHandling(FName, FText, FString) (0) | 2024.02.08 |
언리얼 엔진의 포인터 (0) | 2024.02.08 |
댓글 영역