일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 파이토치
- 골빈해커
- 영상처리
- matlab 영상처리
- 파이토치 김성훈 교수님 강의 정리
- pytorch
- Pytorch Lecture
- 모두의 딥러닝
- 파이토치 강의 정리
- 팀프로젝트
- c++
- 모두의 딥러닝 예제
- MFC 프로그래밍
- c언어
- tensorflow 예제
- 해리스 코너 검출
- 김성훈 교수님 PyTorch
- TensorFlow
- C언어 공부
- 미디언 필터링
- 케라스 정리
- c언어 정리
- 가우시안 필터링
- object detection
- pytorch zero to all
- 컴퓨터 비전
- 딥러닝 공부
- 딥러닝
- 딥러닝 스터디
- c++공부
- Today
- Total
ComputerVision Jack
[C++프로그래밍 Chapter13] 본문
[템플릿(Template)에 대한 이해]
템플릿 : 자료형이 정해지지 않은 그릇
함수 템플릿
함수를 만드는 도구. 함수의 기능은 존재하지만, 자료형은 결정되지 않았다.
다양한 자료형의 함수를 만들어 낼 수 있다.
int Sample(int num1, int num2){ return num1 - num2 } 함수가 존재할 때,
템플릿으로 변환하면
T Sample(T num1, T num2) { return num - num1 } 변환이 된다.
즉, 함수의 기능은 뺄셈으로 똑같이 정의되지만, 자료형은 T로 정의되지 않은 것을 볼 수 있다.
Sample<double>(2.5, 1.0) 형태로 사용이 가능하다.
Sample(2.5, 1.0) 식으로 사용이 된다면, 알아서 값 손실 없이 인자를 전달하기 위해 double로 설정된다.
<템플릿 사용방법>
template<typename T>
T Sample(T num1, T num2){ .... }
#T를 이용하여 아래의 함수를 템플릿으로 정의한다는 의미.
template<class T>
#위 식으로 클래스를 사용할 수도 있다.
둘 이상의 형(Type)에 대해 템플릿 선언하기
둘 이상의 형에 대해서도 템플릿을 적용할 수 있다.
template <class T1, class T2> = template <typename T1, typename T2> 같은 의미이다.
이 경ㅇ T1 은 int로 T2는 double로 템플릿 선언이 가능하다.
함수 템플릿의 특수화(Specialization)
상황에 따라서 함수의 구성 방법에 예외를 둘 필요가 있다.
이 때 사용되는 것이 템플릿의 특수화이다.
template<>
int * ~~~~
#템플릿 함수를 정의한다. 대신 int형 템플릿 함수를 사용하고 싶은 경우 아래 형식처럼 사용해라.
[클래스 템플릿(Class Template)]
정수와 실수 클래스를 만들어야 할 경우, 두가지를 각각 자료형에 맞게 선언해야한다.
하지만 클래스 템플릿을 사용하면 한번에 구현할 수 있다.
template <typename T>
class Sample{
private:
T x, T y;
};
템플릿 클래스 객체를 생성할 경우 함수와는 다르게 자료형을 명시해야한다.
Sample<int> sp(3, 4);
'Programming Language > C++ Programming' 카테고리의 다른 글
[C++프로그래밍 Chapter15] (0) | 2020.02.06 |
---|---|
[C++프로그래밍 Chapter14] (0) | 2020.02.05 |
[C++프로그래밍 Chapter12] (0) | 2020.02.03 |
[C++프로그래밍 Chapter11] (0) | 2020.02.01 |
[C++프로그래밍 Chapter10] (0) | 2020.01.31 |