.编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。
时间: 2024-01-21 09:19:31 浏览: 69
下面是一个求任意类型数组中最大元素和最小元素的程序,使用了函数模板:
```c++
#include <iostream>
using namespace std;
template <typename T>
void getMaxMin(T arr[], int size, T& maxVal, T& minVal) {
// 初始化最大值和最小值
maxVal = minVal = arr[0];
// 遍历数组,更新最大值和最小值
for (int i = 1; i < size; i++) {
if (arr[i] > maxVal) {
maxVal = arr[i];
}
if (arr[i] < minVal) {
minVal = arr[i];
}
}
}
int main() {
int arr1[] = { 1, 2, 3, 4, 5 };
int size1 = sizeof(arr1) / sizeof(int);
int maxVal1, minVal1;
getMaxMin(arr1, size1, maxVal1, minVal1);
cout << "Array 1:" << endl;
cout << "Max value: " << maxVal1 << endl;
cout << "Min value: " << minVal1 << endl;
double arr2[] = { 1.2, 3.4, 5.6, -2.5 };
int size2 = sizeof(arr2) / sizeof(double);
double maxVal2, minVal2;
getMaxMin(arr2, size2, maxVal2, minVal2);
cout << "Array 2:" << endl;
cout << "Max value: " << maxVal2 << endl;
cout << "Min value: " << minVal2 << endl;
return 0;
}
```
这个程序定义了一个名为 `getMaxMin` 的函数模板,该函数接受一个任意类型的数组、数组的大小以及两个引用参数,用于返回数组中的最大值和最小值。在函数内部,我们遍历数组,用当前元素更新最大值和最小值。注意,在这个函数模板中,我们使用了模板参数 `typename T`,表示这个函数可以接受任意类型的模板参数。在程序的 `main` 函数中,我们分别定义了两个数组,并调用了 `getMaxMin` 函数模板来求它们的最大值和最小值。输出结果如下:
```
Array 1:
Max value: 5
Min value: 1
Array 2:
Max value: 5.6
Min value: -2.5
```
阅读全文