본문 바로가기

공부/이득우의 언리얼 프로그래밍

[Study] Part 1 - 언리얼 컨테이너 라이브러리 I - Array와 Set (10/15)

728x90
반응형

 

  • 정리
    • 언리얼 컨테이너 라이브러리
      1. TArray, TSet 컨테이너 라이브러리 내부 구조와 활용 방법
      2. 디버그 빌드를 사용해 메모리 정보를 확인하는 방법
      3. 두 컨테이너 라이브러리가 가진 특징의 이해

 

 

  • 언리얼 컨테이너 라이브러리
    • 언리얼 엔진이 자체 제작해 제공하는 자료구조 라이브러리
    • 언리얼 C++은 다양한 자료구조 라이브러리를 직접 만들어 제공하고 있음
    • 게임 제작에 유용하게 사용되는 대표적인 라이브러리들
      • TArray
        • 오브젝트를 순서대로 담아 효율적으로 관리하는 용도
      • TMap
        • 중복되지 않는 요소로 구성된 집합을 만드는 용도
      • TSet
        • 키, 밸류 조합의 레코드를 관리하는 용도
  • C++ STL과 언리얼 컨테이너 라이브러리의 차이점
    • C++ STL은 범용적으로 설계되어 있음
    • C++ STL은 표준이기 때문에 호환성이 높다.
    • C++ STL에는 많은 기능이 엮여 있어 컴파일 시간이 오래 걸림
    • 언리얼 컨테이너 라이브러리(UCL)는 언리얼 엔진에 특화
    • 언리얼 컨테이너 라이브러리(UCL)는 언리얼 오브젝트 구조를 안정적으로 지원
    • 언리얼 컨테이너 라이브러리(UCL)는 가볍고 게임 제작에 최적화되어 있음

 

 

 

  • TArray 개요

TArray 개요

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/array-containers-in-unreal-engine/?application_version=5.1

 

dev.epicgames.com

 

  • 가변 배열(Dynamic Array) 자료구조
  • STLvector와 동작 원리가 유사함
  • 게임제작에서는 가변 배열 자료구조를 효과적으로 활용하는 것이 좋음
    • 데이터가 순차적으로 모여있기 때문에 메모리를 효과적으로 사용할 수 있고 캐시 효율이 높다.
    • 컴퓨터 사양이 좋아지면서, 캐시 지역성(Locality)으로 인한 성능 향상은 굉장히 중요
    • 임의 데이터의 접근이 빠르고, 고속으로 요소를 순회하는 것이 가능
  • 가변 배열의 단점
    • 맨 끝 데이터를 추가하는 것은 가볍지만, 중간에 요소를 추가하거나 삭제하는 작업의 비용이 큼
  • 데이터가 많아질 수록 검색, 삭제, 수정 작업이 느려지기 때문에, 많은 수의 데이터에서 검색 작업이 빈번하게 일어난다면 TArray 대신 TSet을 사용하는 것이 좋음
  • 주로 쓰이는 함수
    • Add
    • Emplace
    • Append
    • Insert

 

 

 

 

 

  • TSet 개요

TSet 개요

 

언리얼 엔진의 세트 컨테이너 | 언리얼 엔진 5.4 문서 | Epic Developer Community

TSet, 세트는 보통 순서가 중요치 않은 상황에서 고유 엘리먼트를 저장하는 데 사용되는 고속 컨테이너 클래스입니다.

dev.epicgames.com

 

 

  • STL의 set과 언리얼 TSet의 비교
    • STL set의 특징
      • 이진 트리로 구성되어 있어 정렬을 지원함
      • 메모리 구성이 효율적이지 않음
      • 요소가 삭제될 때 균형을 위한 재구축이 일어날 수 있음
      • 모든 자료를 순회하는데 적합하지 않음
    • 언리얼 TSet 특징
      • 해시테이블 형태로 키 데이터가 구축되어 있어 빠른 검색이 가능
      • 동적 배열의 형태로 데이터가 모여있음
      • 데이터는 빠르게 순회할 수 있음
      • 데이터는 삭제해도 재구축이 일어나지 않음
      • 자료에는 비어있는 데이터가 있을 수 있음
    • STL set과 언리얼 TSet의 활용 방법은 서로 다르기 때문에 주의할 것
    • STL의 unordered_set과 유사하게 동작하지만 동일하진 않음
    • TSet은 중복 없는 데이터 집합을 구축하는데 유용하게 사용할 수 있음

 

 

  • TArray와 TSet 비교

TArray와 TSet 비교 / 시간복잡도

 

  • TArray
    • 빈틈없는 메모리
    • 가장 높은 접근성능
    • 가장 높은 순회성능
  • TSet
    • 빠른 중복 감지

 

 

 

 

 

 

해당 포스트는 인프런의 <이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해>
강의를 수강하고 정리한 내용입니다.
 

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해 | 이득우 - 인프런

이득우 | 대기업 현업자들이 수강하는 언리얼 C++ 프로그래밍 전문 과정입니다. 언리얼 엔진 프로그래머라면 게임 개발전에 반드시 알아야 하는 언리얼 C++ 기초에 대해 알려드립니다., [사진] 언........................

www.inflearn.com

 

 

 

 

 

728x90