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를 살펴보며, 연결 리스트의 특징과 활용법을 다룰 예정입니다.
반응형
'c++' 카테고리의 다른 글
[C++ STL 시리즈] 3편: deque 사용 (1) | 2025.09.20 |
---|---|
[C++ STL 시리즈] 2편: list 사용법 (0) | 2025.09.19 |
Visual Studio C++ MFC CRect 사용법 (0) | 2025.09.18 |
Visual Studio C++ SendMessage 사용법 정리 (0) | 2025.09.18 |
Visual Studio C++ PostMessage 사용법 정리 (0) | 2025.09.18 |