STL은 표준 C++ 라이브러리의 일부분으로 Standard Template Library의 약자입니다. STL 은 프로그램에 필요한 자료구조와 알고리즘을 템플릿으로 제공하는 라이브러리 입니다. 또한, 자료구조와 알고리즘은 서로 반복자라는 구성 요소를 통해 연결합니다.
다음은 STL 의 구성 요소입니다.
- 컨테이너 (Container): 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 합니다.
- 반복자 (Iterator): 포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리키게 하는 기능을 합니다.
- 알고리즘 (Algorithm): 정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿입니다.
- 함수 객체(Function Object): 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체입니다. 컨테이너와 알고리즘 등에 클라이언트 정책을 반영하게 합니다.
- 어댑터(Adaptor): 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성 요소로 변경합니다 (새로운 구성 요소처럼 보입니다).
- 할당기(Allocator): 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체로 모든 컨테이너는 자신만의 기본 할당기를 가지고 있습니다. 프로그램 대부분은 STL에서 제공하는 기본 할당기만으로 충분하므로 자세히 다루지 않습니다.