¤Whatis STL?
* STL은 Standard Template Library 의 약자로,
일반적으로 가장 많이 사용되는 자료구조와 알고리즘 모음 이다.
¤MeritOf STL
* 사용자가 직접 포인터를 관리 하지 않아도 됨.
* 직관적인 인터페이스
* 수많은 알고리즘을 제공
* Generic Programming
¤Paradigm
* Procedural Programming
- 절차적 프로그래밍, 함수와 실행절차가 중시됨.
[구현] 에 초점을 맞춘 패러다임.
대표적인 언어로는 c
* Object-Based Programming
- 객체 기반 프로그래밍, class를 이용하여 함수와 데이터를 하나의 객체에 사용.
객체를 통해 모든 처리를 함.
프로그램의 모든 처리르 객체에 대한 요구로 처리되며,
객체는 자신이 갖고있는 처리를 실행함.
프로그램의 단순화 + 생산성 + 신뢰성을 높일 수 있다.
대표적인 언어는 javascript(java가 아님!)
* Object-Oriented Programming
- 객체 기반 프로그래밍, OBP에서 한걸음 더 나아가, 상속을 통한 추상화/다형성을 이용
추상 클래스를 통해 객체를 제어함.
유지/보수/생산성등이 뛰어남.
C++ / java / .NET 등
* Generic Programming
- 타입을 총칭(일반)화 하여, 타입에 제약이 없는 로직을 만들수 있다.
(C++에서는 템플릿을 통하여 Type을 총칭(일반)화 한다.)
¤C++/ Generic Programming
- 【문법】 총칭적인the generic singular 총칭 단수 《보기:The cow is an animal.》
C++은 Template 을 통해, Type을 총칭 한다
총칭화된 타입을 사용하는 클래스와 함수
타입에 제약이 없는 로직
STL은 Generic Programming 의 대표적인 예
¤Structureof STL
* STL은 다음 네 가지로 구성되어져 있다.
- Container (컨테이너)
- Algorithm (알고리즘)
- Iterator (이터레이터 - 반복자)
- Fuctor(Function Object) (함수자, 함수객체)
¤Container/ Algorithm / Iterator / Functor
¤Container
* 컨테이너
- 같은 타입의 원소를 관리하는 클래스
- 지능화된 동적배열
- 내부에서 메모리를 관리 – 사용자의 부담을 줄여줌
- 컨테이너는 다음 3가지로 분류됨.
(시퀀스 컨테이너 / 연관 컨테이너 / 어댑터 컨테이너)
¤Algorithm
* 알고리즘
- 복사/전환/병합/정렬 등의 연산을 지원
- 변형 알고리즘
(random_shuffle / replace / fill / generate / remove / unique …)
- 불변형 알고리즘
(for_each / mismatch / equal …)
- 정렬 알고리즘
(Sort / stable_sort / nth_element / _bound / merge …)
¤Iterator
* 이터레이터
- 포인터의 개념을 일반화시킨, 지능화된 포인터
- 내부적으로 실제 포인터를 관리하는 클래스
- 다양한 형태의 데이터를 일관된 방법으로 원소에 접근할 수 있는 방법을 제공
- 포인터에서 사용하던 연산자를 그대로 쓸 수 있음 ( *, ->, ++, -- )
- 사용목적에 따라 기능을 세분화 하여 제공
(Input / Output / Forward / Bidirectional / RandomAccess )
¤Functor
* 함수자(함수객체)
- 연산자 () 를 오버로딩한 클래스
- 컨테이너, 알고리즘 등에서 < 를 대체하는 등, 지능화된 함수 역할
¤Kindof Container
* 시퀀스 컨테이너
:: Key 없이 Data만으로 구성된 컨테이너
- Vector / List / Dequeue
* 연관 컨테이너
:: Key 와 Data의 Pair 로 구성된 컨테이너.
- Set / MultiSet / Map / MultiMap
* 어댑터 컨테이너
:: 컨테이너를 상속받아 특정 기능을 제한하거나 추가하여 만들어진 컨테이너.
Stack / Queue / Priority-Queue 가 있음.




최근 덧글