使用模板元编程快速的得到斐波那契数。。-阿里云开发者社区

开发者社区> rollenholt> 正文

使用模板元编程快速的得到斐波那契数。。

简介:
+关注继续查看

这是一种将运行时消耗转移到编译器消耗的方法,是c++模板的一种应用。

当你的程序运行时效率需要特别高的时候,可以考虑这样的方法。

模板实例化的时候需要常量:

#include <iostream>
using namespace std;
template < unsigned N >
struct Fib
{
   enum
   {
      Val = Fib<N-1>::Val + Fib<N-2>::Val //递归。。
   };
};
template<>    //针对和的特化作为结束的条件
struct Fib<0>
{
   enum
   {
      Val = 0
   };
};
template<>
struct Fib<1>
{
   enum
   {
      Val = 1
   };
};
int main()
{
   cout<<Fib<20>::Val <<endl;
   return 0;
}

如果你觉得Fib<20>::Val这样的调用很麻烦的话可以定义一个类似的宏使得其应用有类似于函数调用的形式:

#define FibFuc( n ) (Fib<n>::Val)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python编程:Django自定义模板标签
Python编程:Django自定义模板标签
7 0
使用C++模板判断是否基本类型
使用C++模板判断是否基本类型
8 0
Confluence 6 导入模板的定义
模板是一个预先定义的页面,这个预先定义的页面可以在创建新页面的时候预先载入。模板能够给一个页面统一的样式或格式。 你可以在 Confluence 中创建你自己的模板,请查看页面 Create a Template 页面的相关内容。
781 0
解决sitemesh3装饰页面不能使用freemarker标签问题
如题,这个问题其实在sitemesh2中已经很好的解决了,不过在sitemesh3中可能没有解决,所以要自己写代码解决了,下面我先讲下sitemesh2是如何解决的: sitemesh-freemarker com.
888 0
少儿编程持续火热,“BrickCode 贝壳编程”获 500 万元天使轮融资
近日,8 - 16 岁少儿编程品牌“BrickCode 贝壳编程”(后简称为贝壳编程)完成 500 万元天使轮融资,投资方为个人投资方和内部员工。
269 0
symbian使用HookLogger检测内存泄漏
查找内存泄漏的代码 大部分的问题都是在一个函数内把参数alloc。而没有释放原来的内存。 一、 打开“开始”菜单中的“运行” 输入 : cmd //进入命令行模式 devices //这个命令可以查看我们的开发机器上安装了几个symbian SDK //S60_3rd_MR_2:com.
854 0
c++编程思想2 --友元存储控制
 友元friend在c++中的应用  我们知道在c++的类访问权限中,private和 protected在类外面进行访问的时候 会因为权限而不能访问 ,友元就解决了这个问题 。 可以这样理解,他为外部的 函数 或者类 进行了 访问授权,其实这已经超出OOP的范畴,但是对于C++而言是以实用为主,所以说C++并不是完全面向对象的语言 C++这一特性就破坏的C++的安全性 。
707 0
使用 WordPress 插件模板开发高质量插件
  WordPress 插件样板是标准化的,有组织的,面向对象的基础,用于构建高品质的 WordPress 插件。样板遵循编码标准和文件标准,所以你不必自己学习这些,根据注释编写代码即可。     官方网站      源码下载   您可能感兴趣的相关文章 网站开发中很有用的 j...
593 0
视图层的引用和模板使用
引用: axml提供两种文件引用方式import和include。    (1)import import可以加载已经定义好的template。             比如,在item.axml中定义了一个叫item的template。
251 0
+关注
406
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载