在 C++ 中使用模板元编程,找到两个整数的 GCD
Using template metaprogramming in C++, find the GCD of two integers
我想知道一个模板元编程解决使用递归欧几里得算法求两个数的GCD问题的方法,下面给出供您参考。
function gcd(a, b)
if b = 0
return a;
else
return gcd(b, a mod b);
非常感谢任何帮助!
是这样的吗?
#include <utility>
#include <iostream>
template<int a, int b> struct gcd
{
static constexpr auto value = gcd<b, a % b>::value;
};
template<int a>
struct gcd<a, 0>
{
static constexpr auto value = a;
};
int main()
{
auto x = gcd<10,5>::value;
std::cout << x << std::endl;
}
我想知道一个模板元编程解决使用递归欧几里得算法求两个数的GCD问题的方法,下面给出供您参考。
function gcd(a, b)
if b = 0
return a;
else
return gcd(b, a mod b);
非常感谢任何帮助!
是这样的吗?
#include <utility>
#include <iostream>
template<int a, int b> struct gcd
{
static constexpr auto value = gcd<b, a % b>::value;
};
template<int a>
struct gcd<a, 0>
{
static constexpr auto value = a;
};
int main()
{
auto x = gcd<10,5>::value;
std::cout << x << std::endl;
}