09.09 - TIL

김혁·2025년 9월 9일

TIL

목록 보기
14/84

오늘의 코드카타

모두 0으로 만들기

  • 트리 구조화 (스택 활용 or dfs)
  • LV3 - 27%
    -> 문제 풀이

오늘의 공부

팀프로젝트 진행

1. AI 기초 클래스 생성

  • AICharacter, AIController 생성
  • AI 비헤이비어 트리, 블랙보드 에셋 생성 후 컨트롤러와 연결

2. 랜덤 이동 구현

  • 랜덤 이동할 위치 계산하는 태스크(BTTask_FindRandomLocation) 구현

3. AI의 상태 추가

  • 비헤이비어 트리에서 상태를 체크하고 변화시킬 EAIState enum 클래스 생성
  • EAIState
    • 대기 상태 (Idle)
    • 이동 상태 (Move)
    • 모이 쪼기 상태 (Peck)
    • 알 낳기 상태 (LayEgg)
  • 주의할 점
    • UENUM(BlueprintType) 매크로를 사용할 경우, 블루프린트에서 인식 가능
    • 하지만, blackboard의 enum 유형 Key Type -> Enum Type에는 검색이 안 됨
      => Key Type -> Enum Name에 직접 입력 시에 활성화됨
  • Behavior Tree 구현


정리 노트

오늘의 CS

std::vector에서 size vs capacity

  • size
    • 현재 vector에 들어있는 원소의 개수
    • 실제로 할당되어 있는 원소 수를 반환
  • capacity
    • 재할당 없이 vector가 담을 수 있는 원소의 최대 개수
    • 내부적으로 확보해 준 메모리 크기

vector 원소 추가 시 내부 동작

  1. vector에 원소 추가
  2. 현재 size가 capacity보다 작은 경우에는 원소 추가
  3. size와 capacity가 같은 경우에는 컴파일러에 따라 capacity를 1.5배, 2배 등으로 증가
  4. 동적 메모리를 capacity만큼 할당하고 기존의 원소를 복사

테스트 코드

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> v;
    cout << "Initially -> size: " << v.size() << ", capacity: " << v.capacity() << "\n";

    for (int i = 0; i < 10; i++) {
        v.push_back(i);
        cout << "After push_back(" << i << ") -> size: " << v.size() << ", capacity: " << v.capacity() << "\n";
    }

    return 0;
}

  • Visual Studio 2022 (MSVC): 1.5배씩 capacity 증가

  • GCC: 2배씩 capacity 증가


capacity와 관련된 함수

  • reserve(n)
    • vectorcapacity를 n으로 늘리도록 요청
    • 만약 현재 capacity가 n보다 크다면 영향을 미치지 않음
  • shrink_to_fit()
    • capacitysize와 같도록 줄이라고 요청
profile
게임 개발자를 향해..

0개의 댓글