아카이브

[C++] 표준 템플릿 라이브러리(STL)에 대해서 본문

Language/C++

[C++] 표준 템플릿 라이브러리(STL)에 대해서

Rayi 2025. 3. 13. 12:17

STL(Standard Template Library), 혹은 표준 템플릿 라이브러리는 C++에서 쉽게 사용할 수 있도록 여러가지 함수 혹은 기능들을 미리 만들어 모아놓은 라이브러리입니다.

 

※ C에서 필수적으로 사용하는 <stdio> 혹은 <string> 등도 라이브러리의 일종입니다.

 

STL은 크게 컨테이너 / 반복자 / 알고리즘 / 함수자 네 가지 기능으로 이루어져 있습니다.

1. 컨테이너 (Container)

데이터를 저장하는 객체, 즉 데이터 구조를 다룹니다.

 

컨테이너는 표준 연속 컨테이너표준 연관 컨테이너로 구분됩니다.

 

표준 연속 컨테이너(Standard sequential container)는 순서가 있는 선형 구조를 포함하며,

 

표준 연관 컨테이너(Standard associative container)는 key-value 구조를 포함합니다.

 

그 외에도, 기존에 존재하는 컨테이너 구조를 변형하여 구현된 container adaptor도 존재합니다.

표준 연속 컨테이너 vector, dequeue, list, slist
표준 연관 컨테이너 set, multiset, map, multimap, hash_set, hash_map, hash_multiset, hash_multimap
컨테이너 어댑터 queue, priority queue, stack

2. 반복자 (Iterator)

반복자는 컨테이너에 포함된 데이터의 위치를 표시해줍니다.

 

반복자는 크게 다섯 종류가 있습니다.

input iterators 읽기 전용
output iterators 쓰기 전용
forward iterators 읽고 쓰기
bidirectional iterators forward iterator들과 같지만, 뒤로도 움직일 수 있음
random access iterators 한 연산에서 어떤 수만큼이라도 자유롭게 움직일 수 있음

 

컨테이너의 종류에 따라 사용되는 반복자의 종류도 다양하게 변합니다.

 

예를 들어 list 컨테이너에서는 bidirectional iterator만 동작할 수 있지만, vector 컨테이너에서는 random access iterator도 동작이 가능합니다.

3. 알고리즘 (Algorithm)

정렬 알고리즘과 같은 일부 알고리즘 기능들을 구현하여 STL에서 미리 제공해줍니다.

 

보통 반복자를 사용할 수 있는 컨테이너라면 종류 구분 없이 해당 알고리즘이 적용될 수 있습니다.

4. 함수 객체 (Function Object)

STL은 함수 호출 연산자 operator( )를 오버로드하는 클래스들을 가집니다.

 

그리고 이러한 클래스들의 인스턴스들을 함수자(또는 함수 객체)라고 부릅니.

728x90

'Language > C++' 카테고리의 다른 글

[C++] STL | 01. unordered  (0) 2025.03.13
[C++] C++에 대해서  (0) 2025.03.13
Comments