编写模板函数求最大值

时间:2022-03-20 15:32:34
编写模板函数maxn(),它将由一个T类型元素组成的数组和一个表示数组 元素数目的整数作为参数,并返回数组中最大的元素。在程序对它进行测 试,该程序使用一个包含6个int元素的数组和一个包含4个double元素的数 组来调用该函数。程序还包含一个具体化,它将char指针数组和数组中的 指针数量作为参数,并返回最长的字符串的地址。如果有多个这样的字符 串,则返回其中第一个字符串的地址。使用由5个字符串指针组成的数组来 测试该具体化。 代码:
#include<iostream>
#include<cstring>
using namespace std;
template<class T>//对于那个整形和浮点型的比较低大小
T maxn (T arr[], int n)
{
int i;
T max = arr[0];
for (i = 1; i < n; i++)
{
if (arr[i] > max)
max = arr[i];
}
return max;
}
template<> const char * maxn(const char * arr[], int n)
{
const char *max = arr[0];
for (int i = 1; i < n; i++)
{
if (strlen(arr[i]) > strlen(max))
max = arr[i];
}
return max;
}

int main()
{
int arr[5] = { 1,2,3,4,9 };
double ard[4] = { 1.2, 2.3, 3.4, 4.5 };
const char *char_arr[5] =//字符串数组的数组
{
"hello world",
"what your name?",
"I love you",
"you are wonderful",
"hi"
};
cout << "Max integer: " << maxn(arr, 5) << endl;
cout << "Max double: " << maxn(ard, 4) << endl;
cout << "Max string: " << maxn(char_arr, 5) << endl;
cin.get();
return 0;
}