본문 바로가기

[ C/ C++ 프로그래밍 ]/[ STL ]

[ 혼연 정리 ] STL 개요 - 1

◎ STL 소개

ㅇ 자료구조와 알고리즘

 자료구조: 처리하고자 하는 데이터를 표현하는 방법

 알고리즘 : 이 자료들을 가공하여 유용한 정보를 생산하는 기법


ㅇ일반화

 일반화(Generic)는 객체 지향의 다음 세대라고 일컬어진다.

1. 임의 타입에 사용할 수 있는 자료 구조를 만들 수 있다.
  ex) C++의 템플릿 문법

2. 자료 구조의 형태나 구조에 상관없이 임의의 데이터 집합에 적용할 수 있는 일반화된 알고리즘을 제공
 
※ 일반화의 개념에 의해 자주  사용되는 자료 구조와 제공하는 알고리즘을 라이브러리가 STL 이다.


ㅇ STL (Stand Template Library) 이란?
 
- 템플릿의 집합을 제공하는 라이브러리

- 장점
  ①  일반화를 지원 : 하나의 단일 알고리즘으로 복수 개의 컨테이너에 동일한 작업을 똑같은 방법으로 수행
  ②  실행시의 효율 저하가 없다 : 컴파일 타임 매커니즘 사용
  ③ 객체지향적이지 않다. :  알고리즘 함수 ==> 대부분 전역, 멤버 함수 제공은 드물다.
       상속개념 많이 사용하지 않음, 가상함수 사용하지 X(느림)
      모든 선택 컴파일 중에 정적으로  결정
  ④ 이식성 확보 : 표준
  ⑤ 확장 가능


- 단점
  ① 코드가 비대해 진다 : 템플릿 기반 => 똑같은 컨테이더라도 타입이 바뀌면 따로 생성, 속도향샹을 위해 코드 크기 포기
  ② 가독성이 떨어진다 :  템플릿 기반, 소스가 난해 하기 때문에 디버깅 및 유지 보수 비용 증가
  ③ 배우기에 쉽지 않다. : C++ 문법에 익숙한자, 익숙하게 사용하려면  반년정도 걸림
  ④ 예외 처리와 잘 맞지 않음

 

 ps : 자세한 내용은  www.WinAPI.co.kr 참고