Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[STL] STL이란? 본문

STL

[STL] STL이란?

Unknowns 2021. 12. 7. 17:44

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