STL ( Standard Template Library ) 이란?

  • STL은 일반적으로 많이 사용되는 자료구조와 알고리즘을 모은 표준 템플릿 라이브러리입니다.
  • STL은 반복자, 알고리즘, 함수자, 컨테이너라고 불리는 네 가지의 구성 요소를 제공합니다.




Template 과 Generic Programming

  • 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하여 코드의 재사용성 및 다형성의 이점을 얻을 수 있는 프로그래밍 기법입니다.

Template

  • Template 은 C++ 에서 Generic Programming 기법을 사용할 수 있는 기능입니다.




STL 반복자 ( iterator )

  • STL 은 일관적으로 STL 컨테이너를 접근할 수 있는 iterator 라고 불리는 반복자를 제공합니다.

iterator 를 사용하는 이유

  • iterator 를 통해서 STL이 제공하는 컨테이너를 일관적인 방법으로 접근할 수 있습니다.




STL 알고리즘

  • STL 은 min_elementPermalink ( 최솟값 ), max_elementPermalink ( 최댓값 ), sort ( 정렬 ), find ( 요소 찾기 ), erase ( 요소 삭제 ) 등의 STL 컨테이너를 대상으로 사용할 수 있는 알고리즘 함수들을 제공합니다.




STL 함수자 ( functor )

  • STL은 plus, minus, multiplies, divides 와 같은 산술 연산 함수자 그리고 equal_to, not_equal_to, greater, less 등과 같은 비교 연산 함수자를 제공합니다.

사용 예시

  • priority_queue<int, vector<int>, greater<int>> pq; 와 같이 사용해서 낮은 숫자가 가장 먼저 pop 될 수 있도록 할 수 있습니다.




STL 컨테이너

  • STL은 시퀀스, 연관, 어뎁터 컨테이너를 제공합니다.

시퀀스 컨테이너

  • 시퀀스 컨테이너는 데이터를 선형을 저장하고 관리하는 형태의 컨테이너를 말합니다.
  • list, vector, deque, forward_list, array 등이 있습니다.

 

어뎁터 컨테이너

  • 기존 컨테이너를 랩핑하여 스택과 큐 같은 인터페이스의 제한을 둔 컨테이너를 말합니다.
  • stack, queue, priority_queue 등이 있습니다.

 

연관 컨테이너

  • key 와 value 를 묶어 데이터를 하나의 쌍으로 저장하는 컨테이너를 말합니다.
  • map, multimap, set, multiset, unordered_map, unordered_multimap, unordered_set, unordered_multiset 등이 있습니다.

+ Recent posts