C++ STL(Standard Template Library이란?
C++ 문법을 공부하다보니, 매우 편리한 STL을 제공하길래 너무나도 유익해 보여서 공부해본다.
먼저, STL은 Standard Template Library의 약자이다. 해석하자면 템플릿을 기반으로 작성된 라이브러리의 모음인데 이것이 표준화 되어있다는 소리이다. 즉, 만국 공통이라는 것이다. 어느 곳에서든 공통으로 사용할 수 있다.
그렇다면 템플릿을 기반으로 작성된 라이브러리는 무슨 말일까?
C++나 JAVA 등의 다른 객체지향 언어들을 살펴보면 템플릿이라는 것이 존재한다. 뜻만 보면 모형자라는 뜻인데 이 모형자의 특징은 다음과 같다.
- 모형이 정해져있다.
- 여러 색을 채워넣을 수 있다.
모형이 정해져있는데 색은 내 마음대로 시시각각, 상황에 맞게 칠할 수 있는 것이다. 이를 프로그래밍 언어에 적용하여 템플릿의 특징을 생각해보았다.
- 수행될 기능이 정해져있다.
- 여러 자료형으로 채워넣을 수 있다.
덧셈이면 덧셈, 곱셈이면 곱셈 수행해야 할 기능은 딱! 정해져있는데 자료형은 내 마음대로 시시각각, 상황에 맞게 지정하여 사용할 수 있는 것이다.
아래의 예는 함수 템플릿을 이용하여 템플릿 함수를 실행하기 까지의 코드이다.
아래와 같이 클래스에 대해서도 적용을 해볼 수 있다.
바로 위의 코드에서 보듯 클래스가 정해져 있고(모형들이 정해져 있음), 자료형을 입맛대로 넣고 사용할 수 있다(색을 마음대로 넣을 수 있다) 이러한 C++의 문법을 활용하여 만들어진 검증된 라이브러리가 STL 이다.
STL에는 무엇이 있을까?
STL의 구성은 다음과 같다.
Container(컨테이너) + Iterator(반복자) + Algorithm(알고리즘)
먼저, 컨테이너는 자료를 저장하는 구조이다. 자료 구조라는 소리이다. vector, list, map, set queue, stack 등이 그 예이다.
다음으로, 반복자는 컨테이너에 저장된 요소들을 순차적으로 처리하기 위한 컴포넌트이다. 자료 구조 내에 접근할 수 있는 방법을 제시해주는 컴포넌트라고 보면 될 것 같다.
마지막으로, 알고리즘은 정렬, 탐색 등의 부 프로그램 모음이라고 보면 될 것 같다. 흔히 알고 있는 그 알고리즘 맞다.
이러한 구성의 STL을 왜 사용하는가?
STL의 장점
STL의 장점은 이미 나와있다. 두 말하면 잔소리이다.
편리하고, 범용적이고, 검증된 라이브러리이다. 특히 C++ 전용으로 만들어진 C++ Template Library 인데 표준이기까지 하다.
공부를 하지 않을 수가 없어서 공부한다.