模板元编程简介

模板是C++一个非常灵活的语言特性,其中模板有一些非常奇特的用法,其中最为奇特的一种用法就是模板元编程。

模板元编程是指在模板实例化的同时利用编译器去完成一些计算任务。

通过模板元编程,可以把一些需要在运行时计算的任务放到编译时来做,从而提高程序的运行时效率。

 

介绍两个例子,简单介绍模板元编程。

 

1:写程序时,通常需要定义一些常量,静态数组的大小常常由常量决定——或者是一个常量本身,或者是由常量构成的表达式,但有时候所需的数组大小不能通过常量的简单运算来表示。

我们希望以常量的阶乘作为一个静态数组的大小,该怎么办?

解:

template<unsigned N>
struct Factorial
{
enum { VALUE = N * Factorial<N - 1>::VALUE};
};

template<>
struct Factorial<0>
{
enum{VALUE = 1};
};

注:可以将struct改成class,但需要将VALUE设置成public属性。

 

const int M = 6;

int array[Factorial<M>::VALUE];

 

第二个例子将在下一章介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值