数据结构预备知识(模板)

模板

功能上类比C++的重载函数,可以使用一种通用的形式,去代替诸多数据类型,使得使用同一种函数的时候,可以实现对于不同数据类型的相同操作。增强类和函数的可重用性。

使用模板函数为函数或类声明一个一般的模式,使得函数的参数、返回值或类中的某些成员取得任意类型。

函数模板

函数模板可以用来创建一个通用功能的函数,支持不同形参,以简化重载函数函数体的设计。

声明方法

template

函数声明

实例(求绝对值函数的模板)

#include
using namespace std;
template
T abs(T x)
{
    return x<0?-x:x;               
 #问号表达式,假如问号前面的式子成立,则返回冒号前面的数值,反之返回冒号后面的数值
}
int main()
{
    int n=4;
    double d=12.2;
    cout<

补充知识点——问号表达式

    return x<0?-x:x; 

问号表达式,假如问号前面的式子成立,则返回冒号前面的数值(或表达式),反之返回冒号后面的数值(或表达式)

 类模板

类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,能取任意类型。

声明方法

template <模板参数表>

class 类名

{类成员声明}

注意,在类模板外定义成员函数时,需要在函数定义前加上模板名。

template<模板参数表>

类型名 类名::函数名 (参数表)

使用模板类产生对象时,按照以下形式声明:

模板类名<模板参数表>对象名1,对象名2...;

实例

#include
using namespace std;
template
class compare
{
public:
    compare(T x,T y)
    {
      item1=x;
      item2=y;
    }
    T max(){return item1>item2?item1:item2;}
private:
    T item1,item2;
};
int main()
{
compareintp(3,5);
comparedblp(9.5,5.2);
cout<

小结

此处使用T作为标识符

函数模板声明

template

函数体

 类模板声明

template

class 类名

{类的具体内容};

类模板外定义成员函数

template<模板参数表>

类型名 类名::函数名(参数表) 

使用模板类产生对象

模板类名<模板参数表>对象名1,对象名2,对象名3...

 

你可能感兴趣的:(数据结构,数据结构,c++,算法)