目录
1.数据结构的特点
问题:如何为数据结构的学习选择合适的语言?
经验分享:支持泛型编程的语言最适合数据结构可能得学习?
2.泛型编程的概念
不考虑具体数据类型的编程方式
对于Swap函数可以下面的泛型写法
Swap泛型写法中的T不是一个具体的数据类型,而是泛指任意的数据类型
3.C++中的函数模板
一种特殊的函数可用不同类型进行调用
看起来和普通函数很相似,区别是类型可被参数化
4.函数模板的语法规则
5.函数模板的使用
- 自动类型推导调用
- 具体类型显示调用
编程实验:函数模板初探
#include <iostream>
using namespace std;
template <typename T>
void Swap(T& a, T& b)
{
T t = a;
a = b;
b = t;
}
int main()
{
int a = 2;
int b = 3;
Swap(a, b);
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
double c = 0.01;
double d = 0.02;
Swap<double>(c, d);
cout<<"c = "<<c<<endl;
cout<<"d = "<<d<<endl;
return 0;
}
6.C++中的类模板
以相同的方式处理不同的类型
在类声明前使用template进行标识
<typename T>用于说明类中使用的泛指类型T
7.类模板的应用
编程实验:类模板初探
#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()
{
Op<int> opInt;
Op<double> opDouble;
cout<<"5*5 = "<<opInt.process(5)<<endl;
cout<<"0.3*0.3 = "<<opDouble.process(0.3)<<endl;
return 0;
}
8.小结
- 模板是泛型编程理论在C++中实现
- 函数模板支持参数的自动推导和显示指定
- 类模板在使用时只能显示指定类型
- 类模板非常适用于编写数据结构相关的代码