티스토리 뷰

반응형

0. STL이란?

표준 템플릿 라이브러리(Standard Template Library)의 약자로, 한마디로 말하자면 많은 개발자들이 공통적으로 사용하는 자료 구조와 알고리즘을 템플릿을 사용하여 매우 정교한 설계로 구현된 클래스이다.

STL은 템플릿 기반의 일반화 프로그래밍 기법을 사용하였기 때문에 어떤 자료형에 대해서도 적용할 수 있다. 또한, namespace std에 포함되어 있다.

* '템플릿'을 이해하기 위한 글 또한 c++ 카테고리에 작성할 예정이며, 작성 후 이 곳에 링크를 기재할 것이다.

- 21.01.15 AM 02:09 -


1. STL이 제공하는 세 가지 컴포넌트

- 컨테이너(container), 반복자(iterator), 알고리즘(algorithm)

1) 컨테이너(container)

이름에서 연상할 수 있듯이 창고처럼 자료를 저장하는 역할을 한다. 다만 창고에 따라서 즉, 어떤 컨테이너를 사용하느냐에 따라 자료의 입출력 방법이 달라진다. 벡터, 리스트, 맵, 집합, 큐, 스택과 같은 다양한 자료구조의 컨테이너가 있다.

2) 반복자(iterator)

반복자는 c++의 포인터와 유사한 역할을 한다고 설명할 수 있는데 즉, 컨테이너에 저장된 요소를 가리키는 역할을 한다. 이를 통해 컨테이너 안에 저장된 요소들을 순차적으로 처리할 수 있다.

컨테이너에는 자료들이 순서대로 저장되어 있다. 이들 자료들을 순서대로 꺼내기 위해서는 현재 처리하고 있는 자료의 위치를 기억하고 있어야 하며, 다음 자료를 가리키도록 증가될 수 있어야 한다. 바로 이 역할을 하는 것이 반복자이다.

반복자에 * 연산자를 적용하면 포인터처럼 반복자가 가리키는 요소가 반환된다. 또한, ++ 연산자를 사용하면 현재의 요소에서 다음 요소로 반복자가 이동한다.

그런데, 왜 포인터를 사용하지 않고 반복자를 사용할까?

앞의 0번 챕터에서 말했듯이 STL은 템플릿을 사용하여 작성되었기 때문에 컨테이너에는 아주 다양한 자료들이 들어갈 수 있다. 그리고, 그 자료들로 이루어지는 구조도 각 컨테이너별로 상당히 다르다.

그렇기 때문에 포인터로 접근하기 보다는, 각각의 컨테이너 안에 정의되어 있는 반복자를 사용하는 것이 바람직하다.

3) 알고리즘(algorithm)

탐색(searching), 정렬(sorting), 계수(counting) 등과 같은 알고리즘들은 프로그램에서 매우 자주 사용된다. STL은 이러한 알고리즘들을 편리하게 사용할 수 있도록 템플릿 기반의 함수들을 제공하여 거의 모든 컨테이너에 대하여 같은 방식으로 동작할 수 있도록 하였다.

STL 알고리즘은 일반적으로 반복자를 사용하여 주어진 타입으로 생성된 컨테이너에 접근한다. 또한, 사용을 위해서는 <algorithm> 헤어 파일을 포함하여야 한다.

 

[참고]

- Power C++, 천인국, 인피니티북스, 2017.08.28 발행

[출처] [C++] STL(Standard Template Library)이란?|작성자 ㄴㅈㅇ

반응형
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함