[STL(Standard Template Library)]
- 표준에서 등록된 템플릿의 집합
- C++에서 제공하는 라이브러리의 일종으로 프로그래밍에서 필요한 자료구조 및 알고리즘을 클래스 템플릿화하여 제공한다.
- 템플릿을 사용하기 때문에 모든 자료형을 호환한다.
- 컨테이너 / 알고리즘 / 반복자 / 함수객체 등으로 구성된다.
[컨테이너]
- 자료구조를 구현한 객체이다.
- 종류
1) vector - 동적 배열 기반
2) list - 노드 기반
3) map - 트리 기반
- 컨테이너 구분 기준
1. 원소 배치 방법 - 표준 시퀀스 컨테이너 (선형적인 구조) : vector , list
- 표준 연관 컨테이너 (비선형적인 구조) : map
2. 메모리 저장 방식 - 배열 기반 (연속된 메모리) : vector
- 노드 기반 (비연속된 메모리) : list , map
[컨테이너 어댑터(container adapter)]
- 기존 컨테이너의 인터페이스를 제한하여 만든 기능이 제한되거나 변경된 컨테이너를 의미한다.
- 특정 형태의 동작만을 수행하도록 한다.
- 단, 반복자의 지원이 없기 때문에 STL 알고리즘에서는 사용할 수 없다.
- 종류 : 스택(stack), 큐(queue), 우선순위 큐(priority_queue)
[알고리즘]
- 문제 해결 방법/기능
- 컨테이너 내에서 정렬, 삭제, 탐색 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿이다.
- 대부분의 알고리즘들은 특정 컨테이너의 멤버가 아닌 전역에 정의되어 있다.
-> 하나의 컨테이너만 독점적으로 사용하는 것이 아니라 모든 컨테이너들이 사용할 수 있도록.
[함수객체]
- 함수 호출 연산자를 연산자 오버로딩하여 사용하는 것.
- 객체를 함수처럼 사용하는 것이다.
-> 객체 이름 뒤에 매개변수를 전달한다.
- () <- 함수호출 연산자
[반복자]
- STL의 핵심
- 반복자를 사용하여 모든 STL이 작동한다.
- 포인터를 사용하듯 반복자를 동일하게 사용할 수 있다.
- 특정 컨테이너 안에 정의된 객체이다!!
- (중요) 포인터가 아니라 객체이다!!!
'c++ > c++' 카테고리의 다른 글
알고리즘 - for_each (0) | 2021.05.29 |
---|---|
STL - vector container (0) | 2021.05.26 |
연산자 오버로딩 - string class 구현2 (0) | 2021.05.23 |
연산자 오버로딩 - string class 구현1 (0) | 2021.05.22 |
const와 포인터 (0) | 2021.05.22 |