题目:
编写模板函数maxn(),它将由一个T类型元素组成的数组和一个表示数组元素数目的整数作为参数,并返回数组中最大的元素。在程序对它进行测试,该程序使用一个包含6个int元素的数组和一个包含4个double元素的数组来调用该函数。
程序还包含一个具体化,它将char指针数组和数组中的指针数量作为参数,并返回最长的字符串的地址。如果由多个这样的字符串,则返回其中第一个字符串的地址。如果有多个这样的字符串,则返回其中第一个字符串的地址。使用由5个字符串组成的数组来测试该具体化。
源代码:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
template <typename T>
T* MAX(T* arr,const int size);
template <> char* MAX(char * arr,int size);
int main()
{
int num_one[6] = { 2,5,3,8,1,9 };
double num_two[4] = { 2.5,5.6,3.1,4.5 };
const char* arr[3] = {
"hello","world","my friend"
};
cout << MAX(num_one,6) << " " << *MAX(num_one,6) << endl;
cout << MAX(num_two,4) << " " << *MAX(num_two,4) << endl;
cout << MAX(arr, 3) << " " << *MAX(arr, 3) << endl;
return 0;
}
template <typename T>
T* MAX(T* arr,const int size)
{
T* max = arr;
for (int i = 1; i < size; i++)
{
if (arr[i] > *max)
max = arr+i;
}
return max;
}
template <> char* MAX(char* arr, int size)
{
char* tmp = arr;
int max = strlen(arr);
for (int i = 1; i < size; i++)
{
if (strlen(arr + i) > max)
{
tmp = arr + i;
max = strlen(arr + i);
}
}
return tmp;
}
演示效果:
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈