출처: http://knightgame.tistory.com/209
STL : 표준 템플릿 라이브러리(Standard Template Library)의 약자로서 많은 프로그래머들이 공통적으로 사용하는 자료 구조와 알고리즘에 대한 클래스.
컨테이너(container) (스마트 배열)
- 자료를 저장하는 구조이다.
- 벡터, 리스트, 맵, 집합, 큐, 스택과 같은 다양한 자료 구조들이 제공된다.
반복자(iterator) (스마트 포인터)
: 컨테이너 안에 저장된 요소들을 순차적으로 처리하기 위한 컴포넌트
- 반복자를 사용하는 이유는 "일관성" 때문이다. (컨테이너 종류와 상관없이 다 순차적으로 접근가능)
알고리즘(algorithm)
: 정렬이나 탐색과 같은 다양한 알고리즘을 구현
STL의 장점
- STL은 전문가가 만들어서 테스트를 거친 검증된 라이브러리
- STL은 객체 지향 기법과 일반화 프로그래밍 기법을 적용하여서 만들어졌으므로 어떤 자료형에 대해서도 적용
- STL을 사용하면 개발 기간을 단축할 수 있고 버그가 없는 프로그램
컨테이너 어뎁터 : 리스트들을 연결해주는것
순차 컨테이너
- 자료를 순차적으로 저장
- 벡터(vector) : 동적 배열처럼 동작한다. 뒤에서 자료들이 추가된다.
- 데크(deque) : 벡터와 유사하지만 앞에서도 자료들이 추가될 수 있다.
- 리스트(list) : 벡터와 유사하지만 중간에서 자료를 추가하는 연산이 효율적이다.
연관 컨테이너
컨테이너 어댑터
반복자
- 현재 처리하고 있는 자료의 위치를 기억하는 객체
- 포인터와 유사
- * 연산자 사용 가능
- ++연산자 사용 가능
정렬
벡터
벡터 == 동적 배열 == 스마트 배열
템플릿으로 설계
[]가능
벡터와 리스트의 차이점
벡터에서는 임의 접근이 가능하지만 리스트에서는 불가능하다.
리스트는 [] 연산자를 지원하지 않으며 리스트에서 어떤 요소에 접근하려면 첫 번째 요소부터 수나적으로 이동하여야 한다.
따라서 임의 접근 반복자를 필요로 하는 binary_SEARCH()와 같은 알고리즘을 적용할 수 없다.
'Programming' 카테고리의 다른 글
[펌] PHP vs. Ruby vs. Python (인포그래픽) (0) | 2012.02.28 |
---|---|
[펌] (링크 2): Win7의 Timer Resolution : 15msec (1) | 2011.12.13 |
[펌] BugTrap 상세 설명 (2) | 2011.11.30 |