看图
研究数据结构
-
专注于数据对象中数据元素之间的关系
-
专注于特定结构之上的算法
-
不需要关注数据元素的具体类型
泛型编程的概念
-
不考虑具体数据类型的编程方式
对于Swap函数可以考虑下面的泛型写法
void Swap(T& a, T& b) { T t = a; a = b; b = t; }Swap泛型写法中的T不是一个具体的数据类型,而是泛指任意的数据类型。
泛型编程简介
完整代码案例:
#include <iostream>
using namespace std;
template<typename T> //开始函数的泛型编程
void Swap(T& a,T& b)
{
T t = a;
a = b;
b = t;
}
template <typename T> //开始类的泛型编程
class Op
{
public:
T process(T v)
{
return v * v;
}
};
int main()
{
int a = 1;
int b = 2;
Swap(a,b); //函数的模板的调用,可以自动识别数据类型
cout << "a=" << a << " " << "b=" << b << endl;
double c = 0.01;
double d = 0.02;
Swap<double>(c,d); //函数的模板的调用,显示指定数据类型
cout << "c=" << c << " " << "d=" << d << endl;
Op<int> opInt; //类定义对象时,必须加<type>特定的类型定义
Op<double> opDouble; //类定义对象时,必须加<type>特定的类型定义
cout << "5*5 = " << opInt.process(5) << endl;
cout << "0.3*0.3 = " << opDouble.process(0.3) << endl;
return 0;
}
Qt运行结果
总结: -模板是泛型编程理论在C++的实现 -函数模板支持参数的自动推倒和显示指定 -类模板在使用时只能显示的指定类型 -类模板非常适用于编写数据结构相关的代码