반응형

std::vector는 C++ 표준 라이브러리에서 제공하는 동적 배열 클래스입니다. 크기가 가변적이며, 요소 추가 및 삭제 시 자동으로 크기를 조정합니다. std::vector는 내부적으로 연속적인 메모리 블록에 데이터를 저장하므로, 요소에 대한 임의 접근이 빠릅니다.

 

주요 특징

  1. 동적 크기 조정: 필요에 따라 크기를 자동으로 조정합니다.
  2. 임의 접근: 배열처럼 인덱스를 사용하여 요소에 빠르게 접근할 수 있습니다.
  3. 메모리 관리: 메모리 할당 및 해제를 자동으로 처리합니다.
  4. 유연한 사용: 다양한 편의 메서드(push_back, pop_back 등)를 제공하여 사용이 간편합니다.

 

예제

#include <iostream>
#include <vector>

int main() {
    // 정수형 벡터 선언
    std::vector<int> numbers;

    // 요소 추가
    numbers.push_back(10);
    numbers.push_back(20);
    numbers.push_back(30);

    // 벡터 크기와 요소 출력
    std::cout << "Vector size: " << numbers.size() << std::endl;
    std::cout << "Elements: ";
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // 요소 접근 및 수정
    numbers[1] = 50;
    std::cout << "Modified second element: " << numbers[1] << std::endl;

    // 요소 삭제
    numbers.pop_back();
    std::cout << "After pop_back, vector size: " << numbers.size() << std::endl;

    // 벡터의 모든 요소 출력
    std::cout << "Final elements: ";
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

 

주요 메서드

  • push_back(value): 벡터 끝에 요소를 추가합니다.
  • pop_back(): 벡터 끝의 요소를 제거합니다.
  • size(): 벡터의 현재 크기를 반환합니다.
  • capacity(): 벡터가 메모리를 재할당하지 않고 저장할 수 있는 최대 요소 수를 반환합니다.
  • empty(): 벡터가 비어 있는지 확인합니다.
  • clear(): 벡터의 모든 요소를 제거합니다.
  • at(index): 인덱스를 사용하여 요소에 접근합니다(범위 검사 포함).

 

장점

  • 배열과 달리 크기를 미리 알 필요가 없습니다.
  • 메모리 관리를 신경 쓸 필요가 없습니다.

 

단점

  • 메모리 재할당 시 성능이 저하될 수 있습니다.
  • 배열보다 메모리 오버헤드가 더 클 수 있습니다.

std::vector는 C++에서 유용하고 많이 사용되는 컨테이너로, 대부분의 상황에서 배열보다 더 유연하게 사용할 수 있습니다.

+ Recent posts