c++

[C++ STL 시리즈] 1편: STL 개요 및 vector 사용법

개발에대해 2025. 9. 19. 09:19

 

C++ STL 시리즈 1편: STL 개요와 vector 사용법

 

C++ 프로그래밍을 하다 보면 자료구조와 알고리즘을 직접 구현해야 하는 경우가 많습니다.

하지만 C++에서는 이미 구현된 표준 라이브러리인 STL(Standard Template Library)을 제공합니다.

STL은 효율적이고 안정적인 자료구조와 알고리즘을 제공하여, 개발자가 직접 구현하지 않고도 쉽게 사용할 수 있게 도와줍니다.

 

1. STL의 구성 요소

STL은 크게 컨테이너(Containers), 알고리즘(Algorithms), 반복자(Iterators)로 구성됩니다.

  • 컨테이너(Containers): 데이터를 저장하고 관리하는 자료구조입니다. 예: vector, list, deque, set, map
  • 알고리즘(Algorithms): 컨테이너에 적용할 수 있는 다양한 함수 모음입니다. 예: sort, find, count, unique
  • 반복자(Iterators): 컨테이너 내부 요소를 순회할 때 사용하며, 포인터처럼 동작합니다.

 

2. vector 컨테이너

STL에서 가장 많이 사용되는 컨테이너 중 하나가 vector입니다.

vector는 동적 배열(Dynamic Array)이며, 임의 접근(Random Access)이 가능하고,

끝에 요소를 추가하거나 삭제하는 것이 매우 효율적입니다.

vector는 크기가 자동으로 늘어나기 때문에, 배열보다 훨씬 유연하게 사용할 수 있습니다.

 

2-1. vector 선언과 초기화


#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector v;            // 빈 vector 선언
    vector v2 = {1, 2, 3}; // 초기화
}
  

 

2-2. 요소 추가 및 삭제


v.push_back(10); // 뒤에 10 추가
v.push_back(20);
v.pop_back();    // 마지막 요소 삭제
  

 

2-3. 요소 접근


// 인덱스로 접근
cout << v[0] << endl;

// at() 함수 사용 (범위 체크 가능)
cout << v.at(0) << endl;
  

 

2-4. 반복자를 이용한 순회


for(vector::iterator it = v.begin(); it != v.end(); ++it)
    cout << *it << " ";

// C++11 이후 range-based for 사용 가능
for(int n : v)
    cout << n << " ";
  

 

2-5. 유용한 함수

  • insert() : 특정 위치에 요소 삽입
  • erase() : 특정 위치 요소 삭제
  • size() : 요소 개수 반환
  • clear() : 모든 요소 삭제
  • sort(v.begin(), v.end()) : 오름차순 정렬 (알고리즘 적용)

 

3. vector 활용 예제


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

int main() {
    vector v = {5, 2, 9, 1, 7};
    
    // 오름차순 정렬
    sort(v.begin(), v.end());

    // 출력
    for(int n : v)
        cout << n << " "; // 1 2 5 7 9
}
  

 

4. vector 장점

  • 동적 배열이므로 크기 자동 조절
  • 임의 접근 가능 (O(1) 시간)
  • STL 알고리즘과 쉽게 연동 가능
  • 반복자 사용으로 범용 코드 작성 가능
 

정리

이번 글에서는 C++ STL의 기본 개념과 vector 컨테이너 사용법을 정리했습니다.

vector는 가장 많이 사용되는 컨테이너로, 배열처럼 사용하면서도 동적 크기 조절이 가능하고,

다양한 STL 알고리즘과 함께 활용할 수 있습니다.

다음 글에서는 STL의 또 다른 컨테이너인 list를 살펴보며, 연결 리스트의 특징과 활용법을 다룰 예정입니다.

반응형