C++:模板与泛型编程

1. 函数模板

函数模板是一个独立于类型的函数,可作为一种方式,产生函数的特定类型版本。
例如,一个比较两个值并返回比较结果的函数的模板版本为:

template <typename T>
int compare(const T &v1,const T &v2)
{
    if (v1 < v2) return -1;
    if (v2 < v1) return 1;
    return 0;
}

模板定义以关键字template开始,后接模板形参表,它是用尖括号括住的一个或多个模板形参的列表,形参之间以逗号分隔。
在函数模板形参表中,关键字typename和class具有相同含义,可以互换使用。
使用函数模板时,编译器自动实例化不同的版本:

compare(1,2);
compare("hi","world");

从函数实参确定模板实参的类型和值的过程叫做模板实参推断

2. 类模板

自定义Queue类,Queue类的接口为:

template <class Type> class Queue{
public:
    Queue ();
    Type &front ();
    const Type &front () const;
    void push (const Type &);
    void pop();
    bool empty() const;
private:
    //...
};

在使用类模板时,与调用函数模板不同,必须为模板形参显式指定实参:

Queue<int> qi;
Queue< vector<double> > qc;
Queue<string> qs;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值