数据结构课程的特点:
--专注于元素之间的算法
-- 专注于特定结构之上的算法
如何为数据结构的学习选择合适的语言:
支持泛型编程的语言最适合
泛型编程:
--不考虑数据具体类型的编程方式
对于swap的函数可以考虑下面的写法:
template: 告诉编译器开始泛型编程
typename: 告诉编译器T是类型
模板的使用
自动推倒调用
具体类型显示调用
int a = 0;
int b = 1;
swap(a, b);
float c = 2;
float d = 3;
swap<float>(c, d);
编程实验
#include
using namespace std;
template
void Swap(T& a, T& b)
{
T t = a;
a = b;
b = t;
}
int main()
{
int a = 1;
int b = 2;
Swap(a, b);
cout << "a = " << a << " b = " << b << endl;
double c = 0.2;
double d = 0.5;
Swap(c, d);
cout << "c = " << c << " d = " << d << endl;
return 0;
}
C++中的类模板
类魔板的定义类模板的使用
只能显示指定具体的类型,无法自动推倒
使用具体的<Type> 定义对象
operator<int> op1;
operator<double> op2;
int i = op1.op(1,2);
double d = op2.op(0.01, 0.02);
编程实验
#include
using namespace std;
template
void Swap(T& a, T& b)
{
T t = a;
a = b;
b = t;
}
template
class Op{
public:
T process(T v)
{
return v*v;
}
};
int main()
{
Op opInt;
Op opDouble;
cout << "5 * 5 = " << opInt.process(5) << endl;
cout << "0.3 * 0.3 = " << opDouble.process(0.3) << endl;
return 0;
}
小结:
模板是 泛型编程理论在c++中的实现
函数模板支持参数的自动推导和显示指定
类模板在使用时只能显示指定类型
类模板非常适用于编写数据结构相关代码
网友评论