언리얼 컨테이너 라이브러리 - Array, Set

Unreal 이론|2024. 8. 14. 17:36

[이득우의 언리얼 프로그래밍 수업의 정리]

 

언리얼 자체 제작 자료구조 라이브러리 (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

댓글()