728x90

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억번안에 찾는것에 비하면 알 수 있다.


 


매우 빨라서 속도가 배열에서 할 수 있는 랜덤 엑세스에 가깝다.


출처 : http://jins8611.blog.me/110166546425

728x90

'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

+ Recent posts