1. STL 이란.
Standard Template Library. 기본 템플릿 라이브러리.
C++에서 제공하는 표준 라이브러리 이다.
일반적인 자료구조와 알고리즘으로 구현되어 있다.
swap, for (for-each) 등등 이 있다.
템플릿을 사용한 일반화 프로그래밍.
기본적으로 쓰는 템플릿 표준 헤더들을 모아놓은 것으로 다영한 자료구조들이 들어있음.
*라이브러리란.
라이브러리는 사용 할 수 있게끔 이미 만들어진것들이다.
자주 사용하는 함수와 데이터를 실행가능한 바이너리 형태로 묶어놓은 파일.
라이브러리는 독립성이 보장되지만, 라이브러리만으로 실행되는것은 아니다.
이미 완성된 형태로 굳어있는 준 완성 형태.
2. STL의 구성요소
1)컨테이너( container )
- 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 한다.
2) 반복자 ( iterator )
- 포인터와 비슷한 개념. 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여
다음 원소를 가리키게 하는 기능을 함.
3) 알고리즘 (Algorithm )
- 정렬, 삭제 , 검색 , 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿.
4) 함수객체 ( Function Object )
- 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체.
컨테이너와 알고리즘 등에 클라이언트 정책을 반영.
5) 어댑터 ( Adaptor )
- 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경.
6) 할당기 (Allocator )
- 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체로.
모든 컨테이너는 자신만의 기본 할당기를 가지고 있다.
3. STL의 장단점.
장점 : 방어코딩 그딴거 없음. 속도는 빠름.
단점 : 방어코딩을 개나 준 통에. 내부가 복잡해서 분석이 힘듬. (나중에는 만들어서 쓰게 됨.)
STL의 핵심은 목적에 맞게 사용.
어떤 기능이 주요 기능이 될지에 따라 ( 삽입, 삭제 , 검색 ) 적합한 자료구조를 판단해서 사용.
4. STL 에서 제공하는 자료구조.
스택 , 큐 , 덱 , 리스트 , 백터 ( 동적배열 ) , 스트링 , 맵 ( 트리 ) ,셋
이중에서 맵 , 리스트 , 백터는 무조건 쓴다. 숙지를 잘해야 한다.
맵게 셋은 트리의 구조로 되어있는데.
트리의 검색속도가 엄청나게 빠르다.
트리를 사용하면 32번 안에 21억개의 데이터를 찾을 수 있다.
동적배열이 최악의 경우에 21억번안에 찾는것에 비하면 알 수 있다.
매우 빨라서 속도가 배열에서 할 수 있는 랜덤 엑세스에 가깝다.
'Algorithm' 카테고리의 다른 글
STABLE SORT (0) | 2014.11.13 |
---|---|
STL 벡터 리스트 (0) | 2014.11.13 |
round off, truncation error (0) | 2014.10.29 |
정렬 시간복잡도 (0) | 2014.10.17 |
B트리 (0) | 2014.10.17 |