UnrealEngine5/공부

[UE5] UStruct와 UMap, Algo::Transform

왹져박사 2025. 4. 4. 12:47

 

UStruct

구조체와 클래스는 구조적으로 큰 차이가 없지만, 

현재 추세로 볼 때

구조체는 데이터 저장/전송 특화 객체, 클래스는 객체로 사용함

 

접두사 F를 붙임

Reflection을 사용하려면 USTRUCT 매크로를 선언해야 함.

내부에 GENERATED_BODY 매크로를 선언하면 UScriptStuct 클래스로 구현되고, 

제한적으로 Reflection을 지워하여 UPROPERTY 매크로는 선언 가능하지만 UFUNCTION의 기능의 선언 X.

 

대부분 힙 메모리 할당 없이 스택 내 데이터로만 사용.

 

 

 

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/structs-in-unreal-engine

 


TMap

STL map과 UCL map

STL map UCL TMap
이진 트리로 구성 key-value의 TSet 구조로 구현
정렬 지원(메모리 구성 비효율적) 빠른 검색/순회
데이터 삭제 시 재구축 데이터 삭제 시 재구축X
순회에 비적합 TMultiMap으로 중복 value도 관리 가능

 사용은 C#의 Dictionary와 비슷, 동작 원리는 STL unordered_map과 유사

내부 구조는 C++의 해시테이블 형태, TSet으로 이루어짐

TSet, TMap모두 중복 key 값을 허용하지 않지만,

TSet은 key값으로만 이루어져 있고, TMap은 key-value 한 쌍으로 이루어져 있음.

 

TSet/TMap/TMultiMap 

모두 접근/검색/삽입/삭제가 O(1)의 시간복잡도를 가짐

TSet: 중복 값 X, key 구성

TMap: 중복 Key 값 X, key-value 구성

TMultiMap: 중복 O, key-value 구성

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/map-containers-in-unreal-engine

 


Algo::Transform

컨테이너 내부의 값을 다른 컨테이너로 변환하고 싶을 경우 사용하는 알고리즘

다음과 같은 형태로 사용함_가져올 컨테이너 변수, 저장할 컨테이너 변수, 가져와 저장할 값

Algo::Transform(input, output, transform)

 

 

 

https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Core/Algo/Algo__Transform