类型无关:算法的逻辑不依赖存储在数组中的项的类型。
一个函数模板不是一个具体的函数,而是可以变成一个函数的型式
/**
*返回数组a中的最大项
*假设a.size()>0.
*可比较的对象必须提供operator<和operator=
*/
template<typename Comparable>
const Comparable & findMax(const vector<Comparable> & a)
{
int maxIndax=0;
for(int i=1; i<a.size(); ++i)
if(a[maxIndex]<a[i])
maxIndex=i;
return a[maxIndex];
}
int main()
{
vector<int> v1(37);
vector<double> v2(40);
vector<string> v3(80);
vecror<IntCell> v4(75);
// 填入到未显示的那些vector中的附加代码
cout<<findMax(v1)<<endl; //OK:Comparable=int
cout<<findMax(v2)<<endl; //ok:Comparable=double
cout<<findMax(v3)<<endl; //ok:Comparable=string
cout<<findMax(v4)<<endl; //非法:operator<未定义
return 0;
}
|