Vector Container

기술노트

[C++] Vector 컨테이너 기초

Vector는 C++에서 제공하는 자료구조로, 자동으로 메모리를 관리해 주는 동적 배열입니다. 일반적인 배열과 다르게 크기가 자동으로 늘어나거나 줄어들 수 있어서 매우 편리합니다.

Vector 특징

  • 자동으로 크기가 늘어나고 줄어듦
  • 데이터의 추가와 제거가 쉬움
  • 인덱스로 바로 접근 가능 (배열처럼 사용 가능)
  • 내부적으로 연속된 메모리 공간에 저장됨

기본 사용법

먼저 <vector> 헤더 파일을 포함해야 합니다.

#include <vector>

다음과 같이 벡터를 선언합니다. (데이터 타입을 정해야 합니다)

vector<int> v;         // 정수형 벡터 생성
vector<string> s;      // 문자열 벡터 생성

주요 기능 (함수)

벡터에서 자주 사용하는 함수는 다음과 같습니다.

함수 설명 사용법 예시
push_back() 벡터 끝에 원소 추가 v.push_back(10);
pop_back() 벡터 끝의 원소 제거 v.pop_back();
at() 특정 위치 원소 접근 (안전한 방법, 범위 체크 있음) v.at(0);
[ ] 특정 위치 원소 접근 (빠른 방법, 범위 체크 없음) v[0];
front() 첫 번째 원소 참조 v.front();
back() 마지막 원소 참조 v.back();
clear() 벡터의 모든 원소 삭제 v.clear();
size() 원소 개수 확인 v.size();
capacity() 할당된 메모리 크기 확인 v.capacity();
empty() 벡터가 비어있는지 확인 (true 또는 false 반환) v.empty();
resize(n) 벡터 크기를 n으로 변경 (크기를 늘릴 경우 기본값으로 채움) v.resize(5);
assign(n, value) 벡터를 n개의 원소로 채우고 각 원소를 value로 설정 v.assign(3, 7);

size와 capacity의 차이점

  • size는 현재 실제 저장된 원소의 개수
  • capacity는 실제 할당된 전체 메모리 공간 크기

Vector를 사용한 간단한 예제

다음은 간단한 벡터 사용 예제입니다.

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v;  // 정수형 벡터 생성

    v.push_back(1); // 벡터에 1 추가
    v.push_back(2); // 벡터에 2 추가
    v.push_back(3); // 벡터에 3 추가

    // 벡터의 모든 원소 출력 (for문 사용)
    for(int i = 0; i < v.size(); i++) {
        cout << v[i] << endl;
    }

    return 0;
}

결과:

1
2
3

Iterator(반복자)를 이용한 출력 예제

벡터를 더 간단히 순회할 수 있는 방법으로 반복자를 사용합니다.

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v = {1, 2, 3};

    // 반복자(iterator)를 사용한 벡터 원소 출력
    vector<int>::iterator iter;
    for(iter = v.begin(); iter != v.end(); iter++) {
        cout << *iter << endl;
    }

    return 0;
}

결과:

1
2
3

요약 정리

  • 벡터는 크기가 자동으로 관리되는 편리한 배열이다.
  • push_back(), pop_back()으로 쉽게 데이터 추가/삭제 가능하다.
  • size(), empty() 등을 통해 쉽게 상태를 확인할 수 있다.
  • 반복자(iterator)를 이용하면 원소 접근과 관리가 더욱 편리하다.

참고 자료