승쨩개발공부
[STL] STL이란? 본문
STL
Standard Template Library의 약자.
-> 표준에 등록된 템플릿의 집합.
C++에서 제공하는 라이브러리의 일종으로 프로그래밍에 필요한
자료구조 및 알고리즘을 클래스 템플릿화하여 제공한다.
STL 구성 요소
##1. 컨테이너
데이터를 저장하는 객체.
자료 구조를 저장하는 객체.
컨테이너의 종류
배열을 기반으로하는 vector
노드를 기반으로하는 list
트리를 기반으로하는 map
구분 기준
#1. 원소 배치
표준 시퀀스 컨테이너
-> 선형적인 구조 (일렬로 줄 지을 수 있는 구조)
-> 특정 원소를 기준으로 앞, 뒤를 판단할 수 있다.
ex) vector, list
표준 연관 컨테이너
-> 비 선형적인 구조 (일렬로 줄 지을 수 없는 구조)
-> 특정 원소를 기준으로 앞, 뒤를 판단할 수 없다.
ex) map
#2. 메모리 저장 방식
배열 기반
-> 연속된 메모리를 사용한다.
ex) vector
노드 기반
-> 메모리 여기저기 저장해놓고 포인터로 연결해 놓는다.
ex) list, map
##2. 알고리즘
컨테이너 내에서 정렬, 삭제, 탐색 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿
대부분의 알고리즘 함수들은 컨테이너의 멤버가 아닌 전역에 정의되어 있다.
자주 사용하는 알고리즘 함수들은 #include <algorithm> 파일에 존재한다.
##3. 함수객체
() : 함수 호출 연산자
함수 호출 연산자를 연산자 오버로딩하여 객체를 함수처럼 사용하는 것.
##4. 반복자
STL의 핵심
STL마다 원소의 저장 방식이 다르니 순회 방법 또한 달라진다.
순회 방법이 모두 다를 경우 STL을 사용하는데 어려움이 있지만.
반복자를 이용하면 동일한 방법으로 동일한 결과를 얻을 수 있다.
컨테이너 내부에 정의된 클래스 템플릿 이라고 생각하면 된다.
사용 방법은 포인터를 사용하듯이 사용하면 된다.
단, 사용 방법이 포인터와 비슷하다고해서 포인터라고 착각하면 안된다.
'STL' 카테고리의 다른 글
[STL] vector의 메모리정책, 생성자, reserve (0) | 2021.12.08 |
---|---|
[STL] 조건자 (algorithm) (0) | 2021.12.08 |
[STL] 반복자 (iterator) (0) | 2021.12.08 |
[STL] vector (0) | 2021.12.08 |
[STL] 컨테이너 종류 (0) | 2021.12.07 |