표준 템플릿 라이브러리(STL; Standard Template Library)컨테이너(container), 이터레이터(iterator), 함수 객체(function object), 알고리즘(algorithm)을 나타내는 템플릿들의 집합을 제공한다.

 

  • 컨테이너(container)
    배열과 같이 여러 개의 값을 저장할 수 있는 구성 단위를 뜻한다. STL container는 동질적(homogeneous)이다 즉, 그들은 같은 종류의 값들을 저장한다.
  • 알고리즘(algorithm)
    배열을 소트하거나 리스트에서 특정한 값을 검색하는 것과 같은 특별한 작업을 수행하기 위해 사용하는 방법이다.
  • 이터레이터(iterator)
    container안에서 위치를 옮길 수 있도록 도와주는 객체들이며 포인터의 일반화이다.

 

STL의 역사

STL은 Alex Stepanov와 Meng Lee가 1994년에 휴렛팩커드연구소(HewlettPackard Laboratories)에서 그 구현을 발표했다. ISO/ANSI C++ 위원회는 표결을 거쳐 STL을 C++ 표준의 일부로 채택하였다. STL은 객체 지향 프로그래밍이 아니다. 일반화 프로그래밍(generic programming)이라는 새로운 프로그래밍 패러다임이다. 

 

STL의 사용 이유

프로그래밍 시간을 극적으로 단축시키고, 코드의 수를 줄이고, 유지보수가 쉽고 확장성이 뛰어나도록 설계하기 위해 STL을 사용한다. 여기서 가장 중요한 부분은 시간 단축이다. 일반적인 자료구조를 설계하기 위해서는 deque만 해도 100줄을 짜야하고 버그가 발생하면 디버깅을 해야하는 등 여러가지로 시간이 많이 들 것이다. 이러한 과정을 하나의 선언만으로 단 10줄로 코드를 줄이기 위해서 STL을 사용한다.

 

  • STL의 장점
    장점은 시간 단축과 소스 코드의 축소를 들 수 있다.
  • STL의 단점
    디버깅이 어렵고, 프로그램이 무거워진다.
    미숙하게 STL을 사용해 버그가 발생한다면 STL 템플릿 내부에서 복합적으로 문제가 얽혀 오류를 도출한 경우가 많다. 이러한 경우에는 오류 내용도 복잡하고 디버깅도 어려워서 문제가 된다. 또한 아직까지는 컴파일러가 template를 효율적으로 처리하지 못하므로 프로그램의 크기가 커질 우려가 있다.

 


 

'과거 자료' 카테고리의 다른 글

[#2] header <algorithm> - sort 함수  (0) 2022.08.28
[#2] STL :: Vector Template Class  (0) 2022.08.25
[#1] STD :: String Class  (0) 2022.08.24
[#11] Counting Sort : 계수 정렬, 카운팅 정렬  (0) 2022.08.19
[#10] Quick Sort : 퀵 정렬  (0) 2022.08.16