제네릭(generic) 또는 일반화

- 함수나 클래스를 일반화시키고 매개 변수 타입을 지정하여 틀에서 찍어 내듯이 함수나 클래스 코드를 생산하는 기법

 

템플릿

- 함수나 클래스를 일반화하는 C++ 도구

- template 키워드로 함수나 클래스 선언

- 제네릭 타입 : 일반화를 위한 데이터 타입

 

템플릿 선언

template <class T> 또는 template <typename T>

template <class T1, class T2, class T3>

 

구체화

- 템플릿 제네릭 타입에 구체적인 타입 지정

 

템플릿 장점

- 함수 코드의 재사용(생산성, 유용성)

템플릿 단점

- 포팅에 취약(컴파일러에 따라 지원하지 않을 수 있다.)

- 컴파일 오류 메시지 빈약, 디버깅에 많은 어려움이 있다.

 

STL

- 표준 템플릿 라이브러리 ( C++ 표준 라이브러리 중 하나)

- 많은 제네릭 클래스와 제네릭 함수를 포함

 

STL 구성

- 컨테이너 : 템플릿 클래스 (데이터를 담아두는 자료 구조 표현 ex) 리스트, 큐, 스택, 맵, 셋, 벡터)

- iterator : 컨테이너 원소에 대한 포인터

- 알고리즘 : 템플릿 함수(컨테이너 멤버 함수 X)

 

컨테이너 종류

vector : 가변 크기 배열 일반화

deque : 앞뒤 모두 입력 가능한 큐

list : 빠른 삽입/삭제가 가능한 리스트

set : 정렬된 순서로 값을 저장하는 집합(값 유일)

map : (key, value) 쌍을 저장하는 맵

stack : 스택을 일반화

queue : 큐를 일반화

 

iterator 종류 : 반복자 (컨테이너 원소를 가리키는 포인터)

iterator : 다음원소로 전진 read/write

const _iterator : 다음원소로 전진 read

reverse_iterator : 지난원소로 후진 read/write

const_reverse_iterator : 지난원소로 후진 read

 

알고리즘 함수

ex) copy, merge, random, rotate, equal, min, remove, search, ...등

 

헤더파일

- 컨테이너 클래스를 사용하기 위해

ex) vector 클래스 사용 -> #include <vector>

- 알고리즘 함수 사용

-> #include <algorithm>

 

이름 공간 : STL이 선언된 이름 공간 std

'학교수업' 카테고리의 다른 글

임베디드 기초 11주차  (0) 2021.11.27
웹프로그래밍 13주차  (0) 2021.11.26
객체지향 프로그래밍 11주차  (0) 2021.11.23
객체지향 프로그래밍 10주차  (0) 2021.11.22
웹프로그래밍 12주차  (0) 2021.11.21

+ Recent posts