C++ STL 벡터(Vector) 사용법과 예제

C++ STL 벡터(Vector) 사용법

C++에서 제공하는 STL(Standard Template Library)은 프로그래밍을 보다 효율적으로 만들어주는 유용한 도구입니다. 그중에서도 벡터는 가장 일반적으로 사용되는 시퀀스 컨테이너 중 하나로, 동적 배열을 구현한 것입니다. 벡터는 원소를 선형적으로 배열하여 메모리 상에서 연속적으로 존재하게 하며, 크기를 자동으로 조절할 수 있는 장점이 있습니다.

벡터의 기본 개념

벡터는 보통 배열처럼 사용되지만, 몇 가지 중요한 차이점이 존재합니다. 배열은 고정된 크기를 가지는 반면, 벡터는 필요에 따라 크기를 동적으로 변경할 수 있습니다. 이로 인해 벡터는 메모리 사용을 보다 유연하게 관리할 수 있습니다. 또한, 벡터는 각 원소에 대해 상수 시간 O(1)으로 접근할 수 있는 특성을 가지고 있습니다.

벡터 생성 방법

벡터는 다양한 방법으로 초기화할 수 있습니다. 아래는 몇 가지 예시입니다:

  • 기본 생성: std::vector v;
  • 특정 크기로 초기화: std::vector v(10); (10개의 원소를 0으로 초기화)
  • 값으로 초기화: std::vector v = {1, 2, 3};
  • 2차원 벡터 생성: std::vector> v(5, std::vector(3)); (5행 3열의 벡터)

벡터의 주요 메서드

벡터에서 사용되는 주요 메서드들은 다음과 같습니다:

  • push_back(value): 벡터의 끝에 새로운 원소를 추가합니다.
  • pop_back(): 벡터의 마지막 원소를 제거합니다.
  • insert(position, value): 지정한 위치에 원소를 추가합니다.
  • erase(position): 지정한 위치의 원소를 삭제합니다.
  • size(): 현재 벡터의 원소 개수를 반환합니다.
  • empty(): 벡터가 비어 있는지 확인합니다.

벡터 원소 접근하기

벡터의 원소에 접근하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 인덱스를 사용하는 것과 반복자를 활용하는 것입니다. 아래는 두 가지 방법에 대한 예시입니다:


#include 
#include 
using namespace std;
int main() {
  vector v = {10, 20, 30, 40, 50};
  // 인덱스를 사용한 접근
  for (size_t i = 0; i < v.size(); i++) {
    cout << v[i] << " ";
  }
  cout << endl;
  // 반복자를 사용한 접근
  for (auto it = v.begin(); it != v.end(); ++it) {
    cout << *it << " ";
  }
  cout << endl;
  return 0;
}

벡터의 장점과 단점

벡터는 여러 가지 장점을 지니고 있지만, 사용 시 몇 가지 단점도 고려해야 합니다. 장점은 다음과 같습니다:

  • 동적 크기 조절: 필요에 따라 크기를 쉽게 조정할 수 있습니다.
  • 빠른 엑세스: 원소의 인덱스를 이용한 빠른 접근이 가능합니다.
  • 편리한 메서드: 다양한 내장 메서드로 쉽게 조작할 수 있습니다.

하지만 벡터에는 다음과 같은 단점도 존재합니다:

  • 원소 추가 및 삭제 시: 벡터의 중간에 원소를 삽입하거나 삭제할 경우 다른 원소들을 이동해야 하므로, 시간 복잡도가 O(n)입니다.
  • 메모리 사용: 동적 배열이기 때문에 고정 배열에 비해 더 많은 메모리를 사용할 수 있습니다.

결론

STL의 벡터는 C++ 프로그래밍에서 매우 유용하게 사용될 수 있는 자료구조입니다. 다양한 기능을 제공하며, 리스트 형태로 데이터를 조작하는 데 이상적입니다. 벡터의 이해와 활용은 C++ 라이브러리 사용에 있어 필수적이며, 효율적인 프로그래밍을 위한 중요한 기초가 됩니다.

자주 묻는 질문과 답변

C++ STL 벡터는 무엇인가요?

C++ STL 벡터는 동적 배열을 제공하는 컨테이너로, 필요한 만큼 메모리를 할당하고 관리할 수 있는 유연한 데이터 구조입니다.

벡터의 크기는 어떻게 조절하나요?

벡터는 원소를 추가하거나 삭제함으로써 자동으로 크기를 변경할 수 있으며, 이를 통해 메모리를 보다 효율적으로 사용할 수 있습니다.

벡터의 원소에 접근하는 방법은 무엇인가요?

벡터의 원소에 접근하기 위해서는 인덱스를 사용할 수도 있고, 반복자를 통해 순회하는 방법도 있습니다. 둘 다 간편하게 사용할 수 있습니다.

답글 남기기