C++ 函数模板
创始人
2024-03-21 09:59:57

模板是C++泛型编程的基础。一个模板就是一个创建类或者函数的蓝图或者公式。通过提供有效的信息,我们将模板转换为特点的类或者函数,这个转换发生在编译过程


定义模板

假设我们需要一个函数来比较两个值的大小,并指出哪个值大。假如说我们需要比较两个整数谁比较大。那么有以下代码

int compare(const int &a,const int &b)
{if(a>b) return 1;if(b>a) return -1;return 0;
}

那么如果是我想比较两个string的大小呢?那会有如下代码

int compare(const string &a,const string &b)
{if(a>b) return 1;if(b>a) return -1;return 0;
}

这时候大家会发现一个问题,这两个函数几乎相同,唯一的不同是参数的差异,函数体完全一样。如果需要比较的类型少还好,如果所有类型都要比较的话,难道所有的都要写一遍?这不就是傻小子睡凉炕,全凭火力旺!
有没有改进措施?当然是有的,我们发现唯一不同的是参数,那么其实可以通过函数模板这种高效方法解决此问题。


函数模板

我们可以定义一个通用的函数模板,来供功能一样,参数不同的任务去使用。
一个函数模板就相当于一个公式,可以用来生成对应特定类型的函数版本
上面的任务可以写成下面的模板。

template 
int compare(const T &v1,const T &v2)
{if(v1>v2) return 1;if(v2>v1) return -1;return 0;
}

我们的compare函数声明了一个名为T的类型参数,在compare函数中,我们用T表示一个类型,而T表示的实际类型在编译时根据compare的使用情况来确定。

相关内容

热门资讯

科技赋能年味浓 马年新春添新潮 2026马年春节,智能机器人、无人机、人工智能等前沿科技深度融入新春生活的各个场景,为春节注入了科技...
登高祈福、赏梅观景,大年初一北... 新京报讯(记者张璐)记者从北京市园林绿化局了解到,2月17日(大年初一),全市公园共接待游客93.2...
2026新年献词|汇丰晋信基金... 开栏语:马年新春至,辞旧启新程。回顾旧岁,证券业转型深化与公募业高质量发展并行,成绩斐然;展望新年,...
万人免费游邯郸!保姆级薅羊毛攻... (来源:邯郸网络广播电视台)转自:邯郸网络广播电视台家人们谁懂啊!邯郸文旅这次直接把“宠粉”焊在DN...
BofA:美元空仓降至 201... (来源:吴说)美国银行(BofA)2 月调查显示,投资者对美元的看空仓位已降至 2012 年以来最低...