函数模板实例化问题!
题目:
编写模板函数maxn(),它将由一个T类型元素组成的数组和一个表示数组元素数目的整数作为参数,并返回数组中最大的元素。在程序对它进行测试,该程序使用一个包含6个int元素的数组和一个包含4个double元素的数组来调用该函数。程序还包含一个模板的具体化函数,它将char指针数组和数组中的指针数量作为参数,并返回最长的字符串的地址。如果有多个这样的字符串,则返回其中第一个字符串的地址。使用由5个字符串指针组成的数组来测试该具体化函数。
主要是题目中的模板函数的具体化部分,实现就报错。不知道错误的原因!
#include<iostream>
#include<cstring>
using namespace std;
template <class T>
T Maxn(T arr[],int len);
template<>int Maxn(char *arr[],int len);
int main()
{
int iarr[]={7,5,6,9,2,1};
double darr[]={3.1,2.6,4.5,3.3};
char *charr[5]={"how are you?","how old are you?","how do you do?","how how how","how much?"};
int imax=Maxn(iarr,6);
double dmax=Maxn(darr,4);
int i=Maxn(charr,5);
cout<<"int最大的是:"<<imax<<endl;
cout<<"double最大的是:"<<dmax<<endl;
cout<<"最长的字符串是:"<<charr[i]<<endl;
return 0;
}
template <class T>
T Maxn(T *arr,int len)
{
T max=arr[0];
for(int i=1;i<len;i++)
{
if(max<arr[i])
{
max=arr[i];
}
}
return max;
}
template<>int Maxn(char *arr[],int len)
{
int max=strlen(arr[0]);
int n=0;
for(int i=1;i<len;i++)
{
if(strlen(arr[i])>max)
{
max=strlen(arr[i]);
n=i;
}
}
return n;
}