TSet은 TMap과 유사한데, 다른 점은 TSet은 Data 값 자체를 key로써 사용한다는 것이다.
TSet은 Hashing을 사용하여 굉장히 빠른 add, find , remove를 제공한다.
기본적으로 정렬이 되어있지 않고, Unique한 Element를 저장하는 container다.
기본적으로 Hashing 기능이 구현되어 있지만,
DefaultKeyFuncs를 기반으로 새로운 Hashing을 구성할 수 있다 (는 것 같은데)
이를 바탕으로 동일한 value를 여러 Key로 구성할 수도 있다
(하지만 Key값은 Unique 해야 한다.)
TSet 역시 다른 자료구조처럼 어떤 Allocator를 사용할지 정할 수 있다.
TArray와는 다르게 항상 같은 순서를 가지는 것이 아니다.
자동으로 정렬되어 있지 않다고 해도
이렇게 나눌 수 있는데, Set은 순서가 없다.
이건 C++도 마찬가지
그래서 Iteration으로 출력하면, 매번 순서가 달라질 수 있다.
그리고 당연하게도, TArray처럼 연속된 메모리 공간에 배치되지 않는다.
그렇다면 index를 통한 random access가 불가능하겠지.
TSet<FString> FruitSet;
FruitSet.Add(TEXT("Banana"));
FruitSet.Add(TEXT("Grapefruit"));
FruitSet.Add(TEXT("Pineapple"));
// FruitSet == [ "Banana", "Grapefruit", "Pineapple" ]
TSet<FString> FruitSet2;
FruitSet2.Emplace(TEXT("Kiwi"));
FruitSet2.Emplace(TEXT("Melon"));
FruitSet2.Emplace(TEXT("Mango"));
FruitSet2.Emplace(TEXT("Orange"));
FruitSet.Append(FruitSet2);
// FruitSet == [ "Banana", "Grapefruit", "Pineapple", "Pear", "Orange", "Kiwi", "Melon", "Mango" ]
Unreal5 - Live Link Face 사용하기 (0) | 2024.04.29 |
---|---|
🪣 UNREAL Containers - TMap, TMultiMap (0) | 2024.02.09 |
🪣UNREAL Containers - TArray (0) | 2024.02.09 |
🆎Unreal에서의 StringHandling(FName, FText, FString) (0) | 2024.02.08 |
언리얼 엔진의 포인터 (0) | 2024.02.08 |
댓글 영역