Template的使用

当你骄傲的完成了一段算法代码的时候,其中很多的变量类型已经是确定下来的,也许这段代码也可以用在其他的地方,但是唯独变量的类型需要做一下改变。无性生殖的方法应该是现在很多程序员用来解决这种情况的方式。Template对这种情况作出了精妙的解答。
Template有两种,一种针对function,另一种是针对class。
Template Function用法我举一个简单的例子说明一下:有一个计算数值的幂次方函数,calculater,算法是这样的:
int calculater (int base, int exponent)
    {
        int result=base;
        if(exponent<0)
        {
            return 0;
        }
        if(exponent==0)
        {
            return 1;
        }
        while(exponent--)
        {
            result *=base;
        }
        return result;
    }
ok了,现在所有的变量都是int型,那现在我需要长整型的变量应该怎么办呢?无性繁殖吗?可以!
    long calculater (long base, int exponent)
    {
        long result=base;
        if(exponent<0)
        {
            return 0;
        }
        if(exponent==0)
        {
            return 1;
        }
        while(exponent--)
        {
            result *=base;
        }
        return result;
    }
ok!NOW,咱们用Template来解决一下,calculator的template版:
template <class T>  \\这个class不一定是c++里的一个类,<class T>表示:T是一种类型,这种类型只有在调用这个函数的时候才赋予。
T calculator(T base, int exponent)
    {
        T result=base;
        if(exponent<0)
        {
            return (T)0;
        }
        if(exponent==0)
        {
            return (T)1;
        }
        while(exponent--)
        {
            result *=base;
        }
        return result;
    }
template函数的调用方法:
void main()
    {
        int i=calculator(4,5);
        long j=calculator((long)10,5);
        long double a=calculator((long double)6,2);
    }

Template Class的用法是大同小异的,举个例子大家就明白了。

template <class T>
class CTree
{
    public:
        CTree(T t1, T t2, T t3);
        T min();
        T max();
    private:
        T a, b, c, d;

}

实现函数举例:

template <class T>
T CTree<T>::min()
{
    T minab=a < b ? a : b;
    return minab <c ? minab : c; 
}

调用举例:

void main()
{
    CTree<int> obj1(2,3,4);
    cout<<obj1.min()<<endl;
    CTre<float> obj2(4.2,3.4,5.4)
    cout<<obj2.min()<<endl;
}

注意一点就是调用时赋值的T必须支持函数中所有算法,否则会出错。其他的完全ok的,这种方法因为有smart技术的支持,所以也不会增大exe文件大小。很不错!!!!这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值