본캠프 18일차_C++ 문법(10)_STL(벡터_Vector)

YU YEON WON·2025년 8월 28일

1. 오늘 학습 내용(키워드)

CPP의 STL(Standard Template Library) 중 벡터를 배웠다.

  • STL이란?

    • C++에서 프로그래밍을 더 쉽고 효율적으로 만들어 주기 위한 표준 템플릿 라이브러리이다.
    • 컨테이너, 알고리즘, 반복자 등의 템플릿 기반 구성 요소를 포함한다.
    • STL을 활용하면 다양한 자료구조와 알고리즘을 직접 구현하지 않고도, 사용할 수 있다.

  • 컨테이너

    • 컨테이너는 데이터를 담는 자료구조를 말한다.
    • 데이터를 담는 방식이나 제공하는 메서드에 따라 여러 가지 컨테이너를 제공한다.
    • 모든 컨테이너는 템플릿으로 구현되어 있으므로, 다양한 타입의 데이터를 저장할 수 있다.
    • 모든 컨테이너는 메모리 관리를 내부적으로 한다. 따라서 사용 시 메모리 해제를 직접 고려하지 않아도 된다.
    • 대부분 컨테이너는 반복자를 제공한다. 따라서 내부 구현을 몰라도 동일한 방식으로 컨테이너를 순회할 수 있다.
  • 벡터

    • 벡터는 배열과 매우 유사한 컨테이너이다.
    • 템플릿 클래스로 구현되어 특정 타입에 종속되지 않는다.
    • 삽입되는 원소 개수에 따라 내부 배열의 크기가 자동으로 조정된다.
    • 임의 접근이 가능하다.(인덱스를 통해 특정 위치에 접근)
  • 벡터의 선언

    • 타입만 명시해서 선언하는 방법이 있고, 초기값까지 같이 선언하는 경우가 있다.
  vector<int> vec // 빈 벡터로 크기 0
  
  vector<int> vec2(5,10) // 크기는 5이며 모든 값이 10
  
  vector<int> vec3 = {1, 2, 3, 4, 5} // 특정 값으로 벡터를 초기화
  
  vector<int> vec4(vec3) // vec3를 그대로 복사하여 vec4 초기화

  • 벡터에서 중요한 키워드들
    • size : 실제로 벡터에 저장된 요소의 수
    • capacity : 메모리에 할당된 공간의 크기(재할당 없이 저장할 수 있는 요소의 최대 수)
// 요소 추가/삭제
v.push_back(10);    // 벡터 끝에 요소 추가
v.pop_back();       // 벡터 끝의 요소 제거

// 크기 관련
int size = v.size();      // 벡터의 크기 반환
bool empty = v.empty();   // 벡터가 비어있는지 확인 (비어있으면 true)
v.resize(10);            // 벡터 크기 조절
v.reserve(20);           // 메모리 미리 할당 (성능 최적화)

// 요소 접근
int first = v[0];        // 첫 번째 요소 접근
int last = v.back();     // 마지막 요소 접근
int front_element = v.front(); // 첫 번째 요소 접근
  • 벡터의 장점
    • 동적 크기 : 프로그램 실행 중에 크기를 조절할 수 있다.
    • 사용 편의성 : 다양한 함수로 쉽게 조작 가능하다
    • 메모리 효율 : 필요한 만큼만 메모리를 사용한다.

  • 벡터 활용의 예
#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 게임 캐릭터의 스킬 레벨을 저장하는 벡터
    vector<int> skillLevels;
    
    // 스킬 레벨 추가
    skillLevels.push_back(1);  // 첫 번째 스킬 레벨 1
    skillLevels.push_back(3);  // 두 번째 스킬 레벨 3
    skillLevels.push_back(2);  // 세 번째 스킬 레벨 2
    
    // 스킬 레벨 출력
    cout << "캐릭터 스킬 레벨: ";
    for(int i = 0; i < skillLevels.size(); i++) {
        cout << skillLevels[i] << " ";
    }
    
    // 첫 번째 스킬 레벨 업
    skillLevels[0]++;
    
    // 범위 기반 for문으로 출력 (C++11 이상)
    cout << "\n레벨 업 후 스킬 레벨: ";
    for(int level : skillLevels) {
        cout << level << " ";
    }
    
    return 0;
}

2. 느낀점

5번째 과제를 처음 켰다. 언리얼엔진에 엑터를 배치한 이후 코드 입력은 어디서 출발해야하는지 처음에 무엇을 입력해야 하는지 막막했다. 여기저기 구글링 AI에게 물어보면서 조금씩 과제 내용 대로 코드를 채워나가고 있다.

3. 내일 학습 할 것

5번째 과제 수행(계속), C++ 언어복습 STL

profile
🕹️🎮🍱✈️📸 안녕하세요! 게임개발에 도전하고 있습니다!

0개의 댓글