메모장

W 위젯



STL - Lecture1 Study (5)



¤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 가 있음.








트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://codenavy.egloos.com/tb/5460712 [도움말]

덧글

댓글 입력 영역