(→예제) |
(→예제) |
||
35번째 줄: | 35번째 줄: | ||
} | } | ||
</source> | </source> | ||
재귀항수를 이용한 방법은 런타임에 콜스택을 늘려가며 계산해야 하지만, 템플릿 메타 프로그래밍을 이용한 방법은, N값이 컴파일타임에 결정된다면 컴파일타임에 Fibo<N>이 계산된다. |
2015년 4월 21일 (화) 07:44 판
C++에서, 템플릿 메타 프로그래밍은 템플릿을 이용하여 컴파일 타임에 코드를 생성하는 것 이다. 보통함수형 프로그래밍 방식으로 개발하며, 일반화 프로그래밍이 가능하다는 장점이 있다.
예제
int Fibo(int n)// 재귀 함수
{
if(n <= 1) return 1;
return Fibo(n-1) + Fibo(n-2);
}
// 템플릿 메타 프로그래밍
template <int N>
struct Fibo
{
enum{
value = Fibo<N-1>::value + Fibo<N-2>::value
}
}
template <>
struct Fibo<0>
{
enum{
value = 1
}
}
template <>
struct Fibo<1>
{
enum{
value = 1
}
}
재귀항수를 이용한 방법은 런타임에 콜스택을 늘려가며 계산해야 하지만, 템플릿 메타 프로그래밍을 이용한 방법은, N값이 컴파일타임에 결정된다면 컴파일타임에 Fibo<N>이 계산된다.