Cpp-泛型编程基础
哇,很久没有写cpp了,写得太挫了,主要是。emm,好像数据结构作业是实现线程池,趁此机会好好学一遍cpp吧,不要再吹水了。只希望。
C++是一门很强大的语言,泛型编程一般来说可望而不可及,今天来啃一下这小基础吧。
函数重载
假设要比较两个数的值,我们可以使用两个函数进行重载:
int compare(const int&a, const int&b)
{
if (a == b) return 0;
return a>b ? 1 : -1;
}
int compare(const double&a, const double&b)
{
if (a == b) return 0;
return a > b ? 1 : -1;
}
两个函数基本相同,唯一不同的是函数的参数,但是这种比较麻烦。也比较容易出错。
所以对于不同类型都需要用这个函数,我们就产生了这个模板。
模板的定义
template <typename T>
int compare(const T &v1, const T &v2)
{
if (v1 < v2) return 1;
else return 0;
}
模板的定义以关键字 template开始,后面接着模板参数,模板的形参是用尖括号或者多个模板形参,形参之间用逗号进行分割。
使用函数模板