[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 : 정렬 상태가 유지되도록 원소를 병합


  • 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라고 한다. 위 코드처럼 이를 활용하여 벡터의 처음부터 끝까지 모든 원소를 순회하며 출력할 수 있다.

Categories:

Updated:

Leave a comment