행동 트리란?게임 AI에서 널리 사용되는 트리기반의 의사결정 구조, AI캐릭터가 순서,조건에 따라 어떤 행동을 할지 처리합니다. 기본 구조루트(root): 트리의 시작점컴포지트 노드(Composite): 자식 노드를 여러개 가짐Selector: 자식이 하나라도 성공하면 성공 (OR)Sequence: 자식이 모두 성공해야 성공(AND)데코레이터 노드(Decorator): 한 개의 자식을 감싸 조건을 붙임repeat, Inverter, UntilFail리프 노드(Leaf)Action: 실제 행동 수행(공격, 이동 등)condition: 조건 평가노드의 반환에는 Success, Run, Fail로Success: 조건에 해당하여 해당 노드의 코드 실행Run: 노드 실행중Fail: 조건에 실패하여 실패 반환 예시..
map 컨테이너연관 컨테이너로 원소를 key와 value의 쌍으로 저장한다.set은 원소를 key하나로 저장하지만 map은 원소를 key와 value 쌍으로 저장하며, map도 key의 중복 저장을 하지 못하지만 중복저장을 원한다면 multiset을 사용해야한다.map은 [ ] 연산자를 제공하여 key에 해당하는 원소의 value에 쉽게 접근하거나 변경할 수 있다. 균형 이진 트리: 모든 노드가 부모보다 왼쪽이 작고 오른쪽이 큰 형태. (반대라면 반대로) 연관 컨테이너는 균형 이진 트리를 사용하므로 찾기연산( find(), lower_bound(), upper_bound(), equal_range(), count())에 뛰어난 성능(로그 시간)을 보이며 insert 또한 로그 시간 복잡도를 보인다. 중복..
set 컨테이너연관 컨테이너 중 단순한 컨테이너로 Key라 불리는 원소(value)의 집합으로 이뤄진 컨테이너. 중복 혀용X노드 기반의 컨테이너로 균형 이진 트리로 구현되어 있다.set은 원소를 삽입할때 유일한 멤버 함수 insert( )를 제공한다. 균형 이진 트리: 모든 노드가 부모보다 왼쪽이 작고 오른쪽이 큰 형태. (반대라면 반대로) 연관 컨테이너는 균형 이진 트리를 사용하므로 찾기연산( find(), lower_bound(), upper_bound(), equal_range(), count())에 뛰어난 성능(로그 시간)을 보이며 insert 또한 로그 시간 복잡도를 보인다. 중복을 허용하는 multiset 컨테이너템플릿 형식, 인터페이스, 멤버의 형식 모두 set과 같고, key가 중복으로 저..
1. 다음 중 vector 컨테이너의 특징을 고르세요.1. 시퀀스 컨테이너입니다.2. sort( ), splice( ) 멤버함수를 제공합니다. (vector 자체에서 sort splice는 제공하지 않음)3. 배열 기반 컨테이너 입니다.4. 컨테이너 앞, 뒤로 추가/제거가 가능합니다. (vector는 뒤로 추가 제거만 가능)5. 임의 접근 반복자를 제공합니다.6. reserve( ) 멤버 함수를 제공합니다.7. 빠른 시간(상수 시간)에 원소를 삽입, 삭제 할 수 있습니다. (삽입 삭제 시 필요한 만큼의 메모리 공간을 위해 빠른 시간 내에 할 수는 없음) 답: 1, 3, 5, 6 2. 다음 중 deque 컨테이너의 특징을 고르세요.1. 시퀀스 컨테이너 입니다.2. sort( ), splice( ) 멤버 함..
list컨테이너노드 기반의 컨테이너로, 원소가 노드 단위로 저장되며 이중 연결 리스트로 구현됨. list 의 주요 인터페이스템플릿 형식 template >class listT는 list컨테이너 원소의 형식 생성자생성자list ltlt는 빈 컨테이너list lt(n)0원소 n개로 초기화된 컨테이너list lt(n, x)x원소 n개로 초기화된 컨테이너list lt(lt2)lt는 lt2 컨테이너의 복사본 (복사 생성자 호출)list lt(b,2)lt는 반복자 구간 [b, e)로 초기화된 원소를 같는다. 멤버함수멤버함수lt.assign(n,x)lt에 x값으로 n개의 원소를 할당한다lt.assign(b,e)lt에 반복자 b부터 e까지 시퀀스 구간으로 할당한다.lt.back()lt에 마지막 원소를 참조한다.p=l..
Deque 컨테이너vector 컨테이너와 비슷하게 동작하지만 앞으로도 삽입과 삭제가 가능한 컨테이너 vector와 다른 push_backvector에서의 push_back은 기존 메모리에 필요한 메모리를 추가한 메모리공간에 원소들을 삽입했지만deque의 push는 원소가 여러 메모리 블록에 나뉘어 저장된다. Deque의 주요 인터페이스템플릿 형식 template >class dequeT는 deque 컨테이너 원소의 형식 생성자생성자deque dqdq는 빈 컨테이너deque dq(n)0원소 n개로 초기화된 컨테이너deque dq(n, x)x원소 n개로 초기화된 컨테이너deque dq(dq2)dq는 dq2 컨테이너의 복사본 (복사 생성자 호출)deque dq(b,2)dq는 반복자 구간 [b, e)로 초기화..
Vector 컨테이너대표적인 시퀀스 컨테이너이자 배열 기반 컨테이너 Vector의 주요 인터페이스템플릿 형식 template >class vectorT는 vector 컨테이너 원소의 형식 생성자생성자vector vv는 빈 컨테이너vector v(n)0원소 n개로 초기화된 컨테이너vector v(n, x)x원소 n개로 초기화된 컨테이너vector v(v2)v는 v2 컨테이너의 복사본 (복사 생성자 호출)vector v(b,2)v는 반복자 구간 [b, e)로 초기화된 원소를 같는다. 멤버함수멤버함수v.assign(n,x)v에 x값으로 n개의 원소를 할당한다v.assign(b,e)v에 반복자 b부터 e까지 시퀀스 구간으로 할당한다.v.at(i)v에 i번째 원소를 참조한다.v.back()v에 마지막으로 삽입..
1. 다음 빈 칸을 채우세요.1. STL 구성 요소에서 객체들을 저장하는 객체를 ( 컨테이너 ) 라 합니다.2. 컨테이너의 원소를 순회하고 참조하는 객체를 ( 반복자 ) 라 합니다.3. 여러가지 문제 해결을 위한 반복자와 동작하는 함수 템플릿을 ( 알고리즘 ) 라 합니다. 2. 다음 빈 칸을 채우세요.1. 컨테이너 원소가 자신만의 삽입 위치를 갖는 것을 ( 시퀀스 ) 컨테이너라 합니다.2. 컨테이너 원소가 특정 정렬 기준에 의해 자동 정렬된 것을 ( 연관 ) 컨테이너라 합니다. 3. 다음 빈 칸을 채우세요1. 배열 기반 컨테이너인 vector와 deque는 ( 임의 접근 ) 반복자를 제공하며, 그 외 모든 STL컨테이너는 ( 양방향 ) 반복자를 제공합니다.2. (시퀀스(순차열))은 원소의 순..
할당기컨테이너의 메모리 할당 정보와 정책(메모리 할당 모델)을 캡슐화한 STL의 구성 요소할당기는 템플릿 클래스이며 모든 컨테이너는 기본 할당기를 사용합니다.C++의 동적 메모리 할당 연산자 new와 delete를 사용자가 오버로딩해서 사용할 수 있듯이 STL의 할당기도 사용자가 직접 할당기를 정의하고 사용할 수 있습니다. 사용자 정의 할당기: 사용자가 직접 메모리 할당 방식을 제어할 수 있게 합니다. 다중 스레드에 최적화되고 안전한 사용자 메모리 할당 모델이 필요하거나 사용자가 컨테이너에 맞는 메모리 할당 모델을 설계하거나 특정 구현 환경에서 최적화된 메모리 할당 모델을 구축할 때 사용합니다. 컨테이너 기본 할당기 allocator#include #include #include using namespa..