표준 템플릿 라이브러리 (Standard Template Library)란?

c++용 일반 프로그래밍 도구 세트를 제공하는 컨테이너 클래스, 알고리즘, 이터레이터 라이브러리이다.

STL은 C++ 표준 라이브러리의 확장으로 만들어졌으며, C++98 출시 이후 언어의 일부로 포함되어있다.

 

STL의 구성 요소

Containers

컨테이너는 데이터를 저장하고 구성하는 방법을 제공하는 클래스이다.

STL은 벡터, 리스트, 맵, 집합 등 여러 컨테이너 클래스를 제공한다.

이러한 컨테이너는 서로 다른 특성을 가지고 있으며 다양한 상황에서 사용하도록 설계되어있다.

예를 들어 벡터는 무작위로 액세스해야 하는 데이터를 저장하는 데 적합하고, 리스트는 데이터를 자주 삽입하고 제거해야 하는 상황에 더 적합하다.

  • 시퀀스 컨테이너 (Sequence Containers)
    • vector: 동적 배열로, 요소의 추가 및 삭제가 가능하며 인덱스를 통한 빠른 접근이 가능하다.
    • deque: 양방향 큐로 앞뒤로, 요소의 추가 및 삭제가 가능하다.
    • list: 이중 연결 리스트로, 요소의 삽입 및 삭제가 리스트의 어느 위치에서나 빠르게 이루어질 수 있다.
  • 연관 컨테이너 (Associative Containers)
    • set: 중복되지 않는 요소를 저장하며, 요소는 정렬된 상태로 유지된다.
    • map: 키와 값의 쌍을 저장하며, 키는 중복되지 않고 정렬된 상태로 유지된다.
    • multiset: 중복이 허용되는 set이다.
    • multimap: 중복이 허용되는 map이다.
  • 컨테이너 어댑터 (Container Adapters)
    • stack: 후입선출(LIFO) 방식의 데이터 구조를 제공한다.
    • queue: 선입선출(FIFO) 방식의 데이터 구조를 제공한다.
    • priority_queue: 우선순위 큐로, 요소가 우선순위에 따라 정렬되어 저장된다.

 

Algorithms

알고리즘은 컨테이너에서 작동하며 정렬, 검색, 복사 등 다양한 작업을 수행하는 함수이다.

STL은 이터레이터(반복자)를 지원하는 모든 컨테이너에 사용할 수 있는 일반 알고리즘 집합을 제공한다.

이러한 알고리즘은 효율적이도록 설계되었으며 다양한 문제를 해결하는 데 사용할 수 있다.

 

Iterators

이터레이터(반복자)는 컨테이너의 요소에 액세스할 수 있는 방법을 제공하는 객체이다.

이터레이터는 포인터의 일반화 역할을 하며 컨테이너를 순회하고 컨테이너의 요소에 다양한 연산을 수행하는 데 사용할 수 있다.

SLT은 입력, 출력, 순방향, 양방향, 랜덤 엑세스 이터레이터 등 여러 유형의 이터레이터를 제공한다.

 

 

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

C++ - Map  (0) 2024.08.01
C++ - STL 컨테이너  (0) 2024.07.31
C++ - Stack  (0) 2024.07.29
C++ - Vector  (0) 2024.07.29
C++ - 우분투에서 Boost Library 설치하기  (0) 2024.07.19