编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。
时间: 2024-02-17 17:03:52 浏览: 83
好的,以下是代码实现:
```cpp
#include <iostream>
#include <limits> //需要使用 std::numeric_limits
template<typename T>
T findMax(T arr[], int size) {
T max = std::numeric_limits<T>::min(); //初始化为最小值
for(int i=0; i<size; i++) {
if(arr[i] > max) {
max = arr[i];
}
}
return max;
}
template<typename T>
T findMin(T arr[], int size) {
T min = std::numeric_limits<T>::max(); //初始化为最大值
for(int i=0; i<size; i++) {
if(arr[i] < min) {
min = arr[i];
}
}
return min;
}
int main() {
int intArr[] = {1, 3, 5, 7, 2, 4, 6};
double doubleArr[] = {1.0, 3.0, 5.0, 7.0, 2.0, 4.0, 6.0};
int intMax = findMax(intArr, 7);
int intMin = findMin(intArr, 7);
double doubleMax = findMax(doubleArr, 7);
double doubleMin = findMin(doubleArr, 7);
std::cout << "intMax: " << intMax << std::endl;
std::cout << "intMin: " << intMin << std::endl;
std::cout << "doubleMax: " << doubleMax << std::endl;
std::cout << "doubleMin: " << doubleMin << std::endl;
return 0;
}
```
代码中使用了函数模板,可以处理任意类型的数组。同时使用了 `std::numeric_limits` 来获取一个类型的最大值和最小值,以便初始化。
阅读全文