求助:关于const修饰模板参数的问题

以下的程序利用模板实现了从一维数组中找出最大值和最小值,支持int,float,double,char,char*的数据类型,其中char*数据类型的实现用于处理字符串,需要利用模板具体化实现,可是在实现的过程中,发现不能用const修饰模板函数参数,具体如下,不知道我描述清楚了吗?请高手解答~谢谢

#include<iostream>

#include<string>
using namespace std;

template <class T>
void MaxMin( T Array[],int length,T &max,T &min)//即使是字符串也没问题,因为他们比较的是ASCⅡ码

//void MaxMin(const T Array[],int length,T &max,T &min),问题就出在这里,如果在这里和具体化过程中都有const存在的话,那么下面的具体化编译不能成功,有人可以

      //解释一下为什么吗?先谢过了

{if (length<=0)
  {cout<<"错误输入!"<<endl;
  return;
  }
 max=Array[0];
 min=Array[0];
 for(int i=1;i<length;i++)
 {max=(max>Array[i]?max:Array[i]);
  min=(min<Array[i]?min:Array[i]);
 }
 cout<<"数组最大值为:"<<max<<endl;
 cout<<"数组最小值为:"<<min<<endl;
}
//对于指针数组实例化
template <>
void MaxMin( char* Array[],int length,char* &max,char* &min)//即使是字符串也没问题,因为他们比较的是ASCⅡ


{ if (length<=0)
  {cout<<"错误输入!"<<endl;
  return;
  }
 max=Array[0];
 min=Array[0];
 for(int i=1;i<length;i++)
 {int l1=strcmp(max,Array[i]);
  int l2=strcmp(min,Array[i]);
  max=(l1==1?max:Array[i]);
  min=(l2==-1?min:Array[i]);
 }
 cout<<"数组最大值为:"<<max<<endl;
 cout<<"数组最小值为:"<<min<<endl;
}


void main()
{  int Array_Int[]={4,8,8,7,3,};
   int L_Int=sizeof(Array_Int)/sizeof(Array_Int[0]); 
   int Max_Int,Min_Int;
   MaxMin(Array_Int,L_Int,Max_Int,Min_Int); //float and double are the same!
   
   char Array_Char[]={"Come on!"};//compare ASCⅡ
   int L_Char=sizeof(Array_Char)/sizeof(Array_Char[0])-1; 
   char Max_Char,Min_Char;
   MaxMin(Array_Char,L_Char,Max_Char,Min_Char);
   /
    char*Max_String;//
char*Min_String;
char *Array_String[]={"please","come","on","!!"};
int L_String=sizeof(Array_String)/sizeof(Array_String[0]);
MaxMin(Array_String,L_String,Max_String,Min_String);
   
   



}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值