개발세리의 성장기🌿
STL) 1. STL이란 본문
0. 표준 라이브러리
#include <stdio.h>
#include <stdlib.h>
C/Cpp 프로그래밍을 할 때, 입출력이나 메모리 할당 등등의 기능들을 ex) malloc(), printf(), scanf() 직접 구현하지 않고 사용할 수 있게 해주는 표준 라이브러리이다.
1. STL
standard "TEMPLATE" library
표준 "템플릿" 라이브러리
-프로그래밍에서 공통적으로 사용되는 자료구조와 알고리즘을 작성한 것이다.
-cpp에서 제공하는 표준 "템플릿" 라이브러리이다.
일종의 자료형이 지정되지 않은 클래스, 즉 템플릿이라는 틀을 제공하여 사용자가 원하는 자료형으로 만들어 쓸 수 있다.
더 비유적으로 템플릿은 "클래스를 만드는 클래스"라고 이해할 수 있다.
ex)
cpp 제공 컨테이너 + 사용자 정의 = 사용자가 정의한 자료형을 다루는 컨테이너 ~ 그 컨테이너에서 관리되는 자료들
빵 틀을 만드는 공장 + 붕어빵 틀 도안 = 붕어빵 틀 ~ 붕어빵
stack STL + 사용자가 정의한 자료형: int = int형 자료를 다루는 stack 클래스 A
~ A 클래스의 객체 (A 클래스의 동작을 따르고, 자료형이 int인 객체)
queue STL + 사용자가 정의한 자료형: student = student형 자료를 다루는 queue 클래스 B
~ B 클래스의 객체 (B 클래스의 동작을 따르고, 자료형이 student인 객체)
-크게 STL은 세 가지 컴포넌트를 제공한다.
즉, STL = 컨테이너(container) + 반복자(iterator) + 알고리즘(algorithm) 이다.
2. STL이 필요한 이유
- 템플릿 제공
car 클래스의 객체를 관리할 스택과 student 클래스의 객체를 관리할 스택을 따로 작성해야하는 불편함을 없애준다.
- 컴포넌트 제공
직접 구현하지 않아도, 효율적이고 정확한 자료구조, 알고리즘을 사용할 수 있다.
ex)
컨테이너 - stack, vector, queue 등등 - 자료를 저장하는 창고 역할
알고리즘 - sort, merge 등등 - 자료를 어떻게 다룰지에 대한 기술
3. STL 장단점
-장점
이미 최적화된 코드들로 관리되고 있으므로, 코드의 효율성에 대한 신뢰가 높다.
장황하게 자료구조 알고리즘을 작성하지 않아도, 함수로 원하는 기능을 사용할 수 있으므로, 코드가 간결해진다.
-단점
사용법을 익혀야한다.
'algorithm > STL' 카테고리의 다른 글
STL) 5. set (0) | 2020.04.24 |
---|---|
STL) 4. sort() 함수 사용하기 (0) | 2020.03.10 |
STL) 3. vector와 pair 같이 쓰기 (0) | 2020.03.10 |
STL) 2. Vector (0) | 2020.02.26 |