[C++] STL 기본 정리
🦥 STL : Standard Template Library
C++에서 제공하는 표준 라이브러리로,
자료구조, 알고리즘 등을 편하게 사용할 수 있도록 해준다.
크게 Containers, Algorithms, Iterator로 구성된다.
🦥 Containers : 객체를 저장하는 자료 구조
1. 순차 컨테이너 (Sequence Container)
자료를 순서대로 저장하여, 자료가 적은 경우 유리한 구조
예) vector, list, deque, arrays, forward_list
2. 연관 컨테이너 (Associative Container)
빠르게 검색할 수 있는 노드 기반 이진 트리 구조
예) set, multiset, map, multimap
3. unordered 연관 컨테이너 (Unordered Associative Container)
순서가 없는 연관 컨테이너
예) unordered_set, unordered_multiset, unordered_map, unordered_multimap
4. 컨테이너 어뎁터 (Container Adaptors)
기존 컨테이너의 인터페이스 중 일부만 제공하는 컨테이너
예) queue, priority_queue, stack
🦥 Algorithms : 컨테이너의 원소를 활용하는 여러가지 함수
라이브러리를 잘만 활용하면 많은 함수들을 직접 구현하지 않고 사용할 수 있다!
algorithm 라이브러리에 있는 함수들에 대해서 알아보자.
#include <algorithm>
1. 정렬과 병합 (Sort & Merge)
sort
: 특정 범위의 원소를 정렬is_sorted
: 특정 범위의 원소들이 정렬되어 있는지 확인merge
: 정렬 상태가 유지되도록 원소를 병합
2. 탐색 (Search)
search
: 원소열에서 특정 원소열을 탐색lower_bound
: 범위 내의 원소들 중 특정 값보다 작지 않은 첫번째 원소 찾기upper_bound
: 범위 내의 원소들 중 특정 값보다 큰 첫번째 원소 찾기binary_search
: 이진 탐색으로 특정 값과 일치하는 원소 탐색
3. 최대, 최소 (Max, Min)
min
: 최소 원소 찾기max
: 최대 원소 찾기minmax
: 최소, 최대 원소 찾기
4. 그 외의 다양한 함수들
swap
: 두 원소를 서로 교환copy
: 범위 내의 원소들을 복사remove
: 범위 내의 특정 값을 가진 원소들을 제거reverse
: 범위 내의 원소들의 순서를 거꾸로 바꿈count
: 특정 값과 일치하는 원소의 개수
🦥 Iterators : 컨테이너의 요소를 가리키는 포인터 역할
vector<int> v = { 1, 2, 3, 4, 5 };
for (auto i = v.begin(); i != v.end(); i++) {
cout << *i << endl;
}
begin()
과 end()
는 각각 첫 번째와 마지막 원소를 가리키는 포인터를 return하는데, 이를 iterator라고 한다. 위 코드처럼 이를 활용하여 벡터의 처음부터 끝까지 모든 원소를 순회하며 출력할 수 있다.
Leave a comment