·STL: 표준 템플릿 라이브러리(Standard Template Library)의 약자로서 많은 프로그래머들이 공통적으로 사용하는 자료 구조와 알고리즘에 대한 클래스
-> 이런 3가지 요소를 가진다.
컨테이너 ( 자료구조 ), 알고리즘( 함수 ), 반복자 ( 표준화 되게 접근가능 하도록 )
·컨테이너(container) ( 클래스 템플릿 )
·자료를 저장하는 구조이다.
·벡터, 리스트, 맵, 집합, 큐, 스택과 같은 다양한 자료 구조들이 제공된다.
·반복자(iterator)
·컨테이너 안에 저장된 요소들을 순차적으로 처리하기 위한 컴포넌트
·알고리즘(algorithm) ( 함수 템플릿 )
·정렬이나 탐색과 같은 다양한 알고리즘을 구현
순차 컨테이너 ( 배열같이 )
연관 컨테이너 ( DT가 트리구조로 검색에 용이하게 )
컨테이너 어텝터 ( 순차 컨테이너에 포장해서 제한을 둠, LIFO같은.. )
·순차 컨테이너:
·자료를 순차적으로 저장
·벡터(vector): 동적 배열처럼 동작한다. 뒤에서 자료들이 추가된다.
·데크(deque): 벡터와 유사하지만 앞에서도 자료들이 추가될 수 있다.
·리스트(list): 벡터와 유사하지만 중간에서 자료를 추가하는 연산이 효율적이다.
·연관 컨테이너
·사전과 같은 구조를 사용하여서 자료를 저장
·원소들을 검색하기 위한 키(key)
·자료들은 정렬
·집합(set): 중복이 없는 자료들이 정렬되어서 저장된다.
·맵(map): 키-값(key-value)의 형식으로 저장된다. 키가 제시되면 해당되는 값을 찾을 수 있다.
·다중-집합(multiset): 집합과 유사하지만 자료의 중복이 허용된다.
·다중-맵(multimap): 맵과 유사하지만 키가 중복될 수 있다.
·컨테이너 어댑터
·순차 컨테이너에 제약을 가해서 데이터들이 정해진 방식으로만 입출력
·스택(stack): 먼저 입력된 데이터가 나중에 출력되는 자료 구조
·큐(queue): 데이터가 입력된 순서대로 출력되는 자료 구조
·우선 순위큐(priority queue): 큐의 일종으로 큐의 요소들이 우선 순위를 가지고 있고 우선 순위가 높은 요소가 먼저 출력되는 자료 구조
·반복자(iterator)
·현재 처리하고 있는 자료의 위치를 기억하는 객체
·포인터와 유사
·* 연산자 사용 가능
·++ 연산자 사용 가능 - > 다음 데이타를 가리킨다.
알고리즘
알고리즘
·탐색(find): 컨테이너 안에서 특정한 자료를 찾는다.
·정렬(sort): 자료들을 크기순으로 정렬한다.
·반전(reverse): 자료들의 순서를 역순으로 한다.
·삭제(remove): 조건이 만족되는 자료를 삭제한다.
·변환(transform): 컨테이너의 요소들을 사용자가 제공하는 변환 함수에 따라서 변환한다.