Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 알고리즘
- 약참조
- BFS
- 프로그래머스
- moreeffectiveC++
- 선택정렬
- UE4 커스텀로그
- 람다사용정렬
- stl
- 언리얼가비지컬렉터
- C++
- unorder_map
- UE_LOG
- UELOG
- enumasByue
- 정렬알고리즘
- 강참조
- 스마트포인터
- 람다
- C++최적화
- map
- 자료구조
- 애셋로드
- UML관련
- 크리티컬섹션
- 정렬
- 델리게이트
- 언리얼엔진구조체
- dataasset
- 데이터애셋
Archives
- Today
- Total
기억을 위한 기록들
[UE-CPP] FStruct를 TMap/TSet의 Key로 사용하고 싶다면?(with GetTypeHash) 본문
UnrealEngine/UnrealEngine C++ 관련
[UE-CPP] FStruct를 TMap/TSet의 Key로 사용하고 싶다면?(with GetTypeHash)
에드윈H 2023. 7. 9. 15:09TMap이나 TSet등에 다양한 데이터 값을 저장하려고 할때, Key로 사용되는 값을 넣는다.
그 중에서 Key로 FStruct 로 하고싶다면 추가해야할 함수가 있다.
MyStruct라는 구조체가 있다고 치자.
struct FMyStruct
{
private:
int SomeIntData=0;
public:
FMyStruct();
~FMyStruct();
};
이 구조체를 Key로 사용하려고 한 다면 2개의 함수를 추가 해주면 된다.
바로 비교(==) 연산자와 GetTypeHash 함수라는 전역 함수의 파라미터 FMyStruct 이다.
struct FMyStruct
{
private:
int SomeIntData=0;
public:
FMyStruct();
~FMyStruct();
//Override the comparison operator
bool operator==(const FMyStruct& Other) const
{
return SomeIntData==Other.SomeIntData;
}
};
FORCEINLINE uint32 GetTypeHash(const FMyStruct& MidiTime)
{
uint32 Hash = FCrc::MemCrc32(&MyStruct, sizeof(FMyStruct));
return Hash;
}
위 와같이 선언한다면 TMap이나 TSet의 key로 FMyStruct를 사용할 수 있다.
GetTypeHash 함수로 해당 Struct에 대한 고유한 Hash를 만들어주는 알고리즘이고, 엔진에서 FCrc::MemCrc32() 함수를 통해 구조체에 대한 해시를 생성해준다
'UnrealEngine > UnrealEngine C++ 관련' 카테고리의 다른 글
[UE-CPP]std::tie 함수와 언리얼에서의 tie (0) | 2023.07.23 |
---|---|
[UE CPP] 체력관리 컴포넌트 (HealthManageComponent) (0) | 2023.07.16 |
[UE-CPP] 부동소수점 비교시 (0) | 2023.05.14 |
[UE-C++] 특정 액터가 블루프린트 상속받은지 확인하는 방법 (0) | 2023.03.02 |
UE - GAS(Game Ability System)에 관하여 (0) | 2023.03.01 |