C++ STL 프로그래밍(STL 소개 / 함수 템플릿)

1. C++ STL 소개
- 클래스는 멤버 변수와 멤버 함수로 이루어져 이싿.
- 템플릿을 이용하면 총칭화된(generic) 타입을 사용하는 클래스와 함수 만들 수 있다.
- 템플릿을 사용하면 타입에 제약을 받지 않는 로직을 기술할 수 있다.
- Generic Programming을 하기 위해 템플릿이 꼭 필요하다.
- STL은 템플릿으로 만들어졌다.
- 즉, STL은 Generic Programming 으로 만들어진 가장 대표적인 예
2. 함수 템플릿
- 함수 인자의 타입에 제약받지 않는 함수를 템플릿을 사용하여 구현

- 함수 인자의 타입 int 나 float 를 T로 Generic화
- 이렇게 템플릿으로 만든 것은 해당 함수를 호출하는 부분에서 평가
- 호출 할 때(코드에서 사용한 타입만), 해당 인자의 변수 타입을 가진 함수를 만든다
- 만들어진 함수는 소스코드에 만들어지는게 아닌, 프로그램의 코드 영역에 만들어진다.
- 때문에 컴파일 시간이 길어질 수 있고, 실행 파일의 크기가 커진다.
* 함수 템플릿 개선
- 함수 인자에 const와 참조를 사용

* class T
- typename 이 표준화 되기전에 사용한 표기법 class

* 함수 템플릿 개선(다른 타입의 인자 넣기)
- typename을 여러개 사용

- 단, 이 때, 리턴 값을 어떤 타입으로 반환해야 하는지에 대한 버그가 생긴다.
* 함수 템플릿 전문화
- typename을 사용하지 않고, 인수 전달 시, 타입 형변환을 하여 함수 진행


* 함수 템플릿 호출 순서 규칙
1) 전문화된 함수
2) 템플릿 함수
3) 일반 함수
* 논-타입(non-type) 함수 템플릿
- 템플릿 메타 프로그래밍의 핵심!

- template <반환타입, 전달Value타입> T 함수명(T const& 반환타입Value)
- 위와 같이 템플릿 함수를 선언하여 타입이 다른 값 끼리 연산과 리턴 처리
댓글
댓글 쓰기