표준 템플릿 라이브러리 (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 |