[펌] [C++]STL

Programming 2012. 1. 15. 21:36

출처: http://knightgame.tistory.com/209

STL : 표준 템플릿 라이브러리(Standard Template Library)의 약자로서 많은 프로그래머들이 공통적으로 사용하는 자료 구조와 알고리즘에 대한 클래스.



컨테이너(container) (스마트 배열)
  - 자료를 저장하는 구조이다.
  - 벡터, 리스트, 맵, 집합, 큐, 스택과 같은 다양한 자료 구조들이 제공된다.

반복자(iterator) (스마트 포인터)
 : 컨테이너 안에 저장된 요소들을 순차적으로 처리하기 위한 컴포넌트
    - 반복자를 사용하는 이유는 "일관성" 때문이다. (컨테이너 종류와 상관없이 다 순차적으로 접근가능)

알고리즘(algorithm)
 : 정렬이나 탐색과 같은 다양한 알고리즘을 구현

STL의 장점
  • STL은 전문가가 만들어서 테스트를 거친 검증된 라이브러리
  • STL은 객체 지향 기법과 일반화 프로그래밍 기법을 적용하여서 만들어졌으므로 어떤 자료형에 대해서도 적용
  • STL을 사용하면 개발 기간을 단축할 수 있고 버그가 없는 프로그램
검색을 빨리 하고 싶으면 연관 컨테이너를 사용하면 빠르다
컨테이너 어뎁터 : 리스트들을 연결해주는것

순차 컨테이너
  • 자료를 순차적으로 저장
  • 벡터(vector) : 동적 배열처럼 동작한다. 뒤에서 자료들이 추가된다.
  • 데크(deque) : 벡터와 유사하지만 앞에서도 자료들이 추가될 수 있다.
  • 리스트(list) : 벡터와 유사하지만 중간에서 자료를 추가하는 연산이 효율적이다.


연관 컨테이너

컨테이너 어댑터

반복자

  • 현재 처리하고 있는 자료의 위치를 기억하는 객체
  • 포인터와 유사
  • * 연산자 사용 가능
  • ++연산자 사용 가능
탐색(find) : 컨테이너 안에서 특정한 자료를 찾는다.
정렬

벡터
벡터 == 동적 배열 == 스마트 배열
템플릿으로 설계
[]가능

벡터와 리스트의 차이점

벡터에서는 임의 접근이 가능하지만 리스트에서는 불가능하다.
리스트는 [] 연산자를 지원하지 않으며 리스트에서 어떤 요소에 접근하려면 첫 번째 요소부터 수나적으로 이동하여야 한다.
따라서 임의 접근 반복자를 필요로 하는 binary_SEARCH()와 같은 알고리즘을 적용할 수 없다.
Posted by 세모아
,