일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- PyTorch
- nodejs
- react
- PRISMA
- C++
- API
- mongo
- Express
- js
- SOLID
- html
- DB
- Linux
- ps
- review
- Git
- CV
- python
- GAN
- frontend
- threejs
- postgresql
- ML
- CSS
- ts
- sqlite
- vscode
- figma
- DM
- UI
- Today
- Total
아카이브
[C++] 표준 템플릿 라이브러리(STL)에 대해서 본문
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( )를 오버로드하는 클래스들을 가집니다.
그리고 이러한 클래스들의 인스턴스들을 함수자(또는 함수 객체)라고 부릅니.
'Language > C++' 카테고리의 다른 글
[C++] STL | 01. unordered (0) | 2025.03.13 |
---|---|
[C++] C++에 대해서 (0) | 2025.03.13 |