设计一个函数模板,能够从int、char、float、double、long、char*等类型的数组找出最大值元素。提向用类型参数传递数组、用非类型参数传递数组大小,为了找出 char*类型数组中的最大值元素,需要对该类型进行函数重载,即以普通函数的方式重载对char*类型数组求取最大值元素的函数。
时间: 2024-03-22 11:39:56 浏览: 87
好的,我可以为您设计一个满足要求的函数模板。具体代码如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
template<typename T, int size>
T findMax(T (&arr)[size]) {
T maxVal = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i];
}
}
return maxVal;
}
char* findMax(char* arr) {
int len = strlen(arr);
char* maxVal = &arr[0];
for (int i = 1; i < len; i++) {
if (arr[i] > *maxVal) {
maxVal = &arr[i];
}
}
return maxVal;
}
int main() {
int intArr[] = {1, 2, 3, 4, 5};
cout << "Max value in intArr: " << findMax(intArr) << endl;
char charArr[] = {'a', 'b', 'c', 'd', 'e'};
cout << "Max value in charArr: " << *findMax(charArr) << endl;
float floatArr[] = {1.1, 2.2, 3.3, 4.4, 5.5};
cout << "Max value in floatArr: " << findMax(floatArr) << endl;
double doubleArr[] = {1.1, 2.2, 3.3, 4.4, 5.5};
cout << "Max value in doubleArr: " << findMax(doubleArr) << endl;
long longArr[] = {1, 2, 3, 4, 5};
cout << "Max value in longArr: " << findMax(longArr) << endl;
return 0;
}
```
在这个函数模板中,我们使用了两个参数,一个类型参数T,一个非类型参数size。T用来表示数组元素的类型,size用来表示数组的大小。我们首先定义了一个模板函数findMax,该函数接受一个数组的引用,并返回该数组中的最大值元素。
对于char*类型的数组,我们重载了findMax函数,以普通函数的方式来求取最大值元素。在这个函数中,我们使用了strlen函数来获取char*数组的长度,然后使用指针来遍历数组,找到最大值元素的指针。
最后,在main函数中,我们分别定义了不同类型的数组,调用了findMax函数来找到它们的最大值元素。
阅读全文