C++编写一个函数模板,分别求一个组数里面数据的最大值,最小值和平均值。
时间: 2024-12-24 07:28:10 浏览: 0
1_1. 产生100个随机数_求其最小值和最大值以及平均值_
5星 · 资源好评率100%
在C++中,我们可以创建一个模板函数,以便于处理不同类型的数据,无论是整型、浮点型还是其他支持算术操作的基本类型。下面是一个示例,展示了如何编写一个函数模板,用于计算一组数值的最大值、最小值和平均值:
```cpp
#include <iostream>
#include <numeric>
// 函数模板,参数T需要支持比较和算术运算
template <typename T>
struct Calculate {
static T max(const std::vector<T>& nums) {
return *std::max_element(nums.begin(), nums.end());
}
static T min(const std::vector<T>& nums) {
return *std::min_element(nums.begin(), nums.end());
}
// 为了获取平均值,我们需要先求和再除以元素个数
static T avg(const std::vector<T>& nums) {
T sum = std::accumulate(nums.begin(), nums.end(), T{0});
return sum / nums.size();
}
};
int main() {
std::vector<int> int_nums = {5, 9, 1, 8, 4};
std::cout << "Max of integer array: " << Calculate<int>::max(int_nums) << "\n";
std::cout << "Min of integer array: " << Calculate<int>::min(int_nums) << "\n";
std::cout << "Average of integer array: " << Calculate<int>::avg(int_nums) << "\n";
std::vector<double> double_nums = {2.5, 7.8, 1.1, 6.3, 4.2};
std::cout << "Max of double array: " << Calculate<double>::max(double_nums) << "\n";
std::cout << "Min of double array: " << Calculate<double>::min(double_nums) << "\n";
std::cout << "Average of double array: " << Calculate<double>::avg(double_nums) << "\n";
return 0;
}
```
这个模板函数`Calculate`接受一个`std::vector`作为参数,并通过标准库提供的`std::max_element`和`std::min_element`找到最大值和最小值,通过`std::accumulate`计算总和然后除以元素个数得到平均值。
阅读全文