#include<iostream> using namespace std; // 模板函数maxn() template<class T> T maxn(T arr[],int len) { T maxobj=arr[0]; for(int i=0;i<len;i++) { if(arr[i]>maxobj) { maxobj=arr[i]; } } return maxobj; } // 显式具体化 template<> char* maxn<char*>(char* arr[],int arrlen) { cout<<"具体化调用"<<endl; char* maxlenptr=arr[0]; // 字符串指针 int maxlen=strlen(arr[0]); // 最大长度 int tmplen=0; for(int i=0;i<arrlen;i++) { tmplen=strlen(arr[i]); if(tmplen>maxlen) { maxlen=tmplen; maxlenptr=arr[i]; } } return maxlenptr; } void main() { // 调用模板 int arr1[6]={1,2,3,4,5,6}; double arr2[4]={1.0,2.0,3.0,4.0}; cout<<"第一组最大值:"<<maxn(arr1,6)<<endl; cout<<"第二组最大值:"<<maxn(arr2,4)<<endl; // 调用具体化 char* arr3[5]={ "hello", "i am a human", "i like sport", "i am 12 years old", "how about you"}; cout<<"最长字符串:"<<maxn(arr3,5)<<endl; }
#include <iostream> #include <cstring> using namespace std; template <typename T> T maxn(T st[],int n); template<> char* maxn<char*>(char* sst[],int n); int main() { int arr[5]={1,2,3,4,5}; double arr_d[5]={19.6,13,19.8,100.8,98.4}; char* ass[2]={"Hello","Hello world"}; cout<<"The Max Element of int array:"<<maxn(arr,5)<<endl; cout<<"The Max Element of double array:"<<maxn(arr_d,5)<<endl; cout<<"The Max Element of string:"<<maxn(ass,2)<<endl; system("pause"); return 0; } template <typename T> T maxn(T st[],int n) { T max=st[0]; for (int i = 0; i < n; i++) { if(max<st[i]) max=st[i]; } return max; } template<> char* maxn<char*>(char* sst[],int n) { int pos=0; for (int i = 0; i < n; i++) { if(strlen(sst[pos])<strlen(sst[i])) pos=i; } return sst[pos]; }