언리얼 컨테이너 라이브러리 - Array, Set
[이득우의 언리얼 프로그래밍 수업의 정리]
언리얼 자체 제작 자료구조 라이브러리 (UCL - Unreal Container Library)
게임 제작에 유용하게 사용되는 라이브러리는 크게 세가지로, TArray, TSet, TMap
C++ STL은 표준이라 범용적이고 호환성이 높지만, 많은 기능이 엮여있어 컴파일 오래걸림
언리얼 컨테이너 라이브러리는 언리얼 엔진에 특화, 언리얼 오브젝트 구조 안정적으로 지원, 가벼워 게임제작에 최적!
vector -> TArray
set -> TSet
map -> TMap
위의 쌍으로 용도가 비슷하지만 TSet과 TMap은 내부 구현이 좀 다르다
1) TArray
-> Dynamic Array 자료구조.
-> 데이터가 순차적으로 모여있어 메모리 효과적 사용, 캐시 효율 높음
-> 맨 끝에 데이터 추가는 가볍지만, 중간 요소 추가나 삭제는 비용 큼
-> 많은 수의 데이터에서 검색 작업이 빈번하다면 TSet이 더 낫다
-> Add보다 Emplace가 효율이 무조건 더 좋다. 가능하면 Emplace 사용
2) TSet
-> 해시테이블 형태로 키 데이터가 구축되어 있어 빠른 검색 가능
-> 동적 배열의 형태로 데이터 모여있음
-> TSet의 데이터는 빠르게 순회 가능
-> TSet의 데이터는 삭제해도 재구축 일어나지 않음
-> TSet의 동적 배열에는 비어있는 데이터 있을 수 있음
-> STL set과 활용 방법 다르기 때문에 주의
-> TSet은 중복 없는 데이터 집합 구축하는데 유용 (파이썬의 Set과 유사한듯?)
-> 데이터 추가할 때 비어있는 부분에 빠르게 메꾸는 형태로 데이터 추가
TArray | TSet | |
접근 | O(1) | O(1) |
검색 | O(N) | O(1) |
삽입 | O(N) | O(1) |
삭제 | O(N) | O(1) |
위와 같은 시간복잡도를 가지기 때문에,
TArray는 빈틈없는 메모리, 가장 높은 접근 성능과 순회성능을 가지며
TSet은 빠른 중복감지 기능을 가진다 (메모리에 빈틈이 있을 수 있기 때문에 접근, 순회는 효율 낮을 수 있다)
'Unreal 이론' 카테고리의 다른 글
언리얼 네트워킹 개요 (3) | 2024.09.02 |
---|---|
언리얼 컨테이너 라이브러리 - 구조체, Map (0) | 2024.08.20 |
언리얼 델리게이트 (0) | 2024.08.14 |
언리얼 컴포지션 (0) | 2024.08.13 |
언리얼 인터페이스 (0) | 2024.08.08 |