C++编写函数,传入一个一维数组返回数组的平均值(double),使用函数重载实现int和double类型数组的平均值计算
时间: 2024-10-26 09:02:52 浏览: 33
在C++中,你可以编写一个通用的函数,通过模板元编程来实现对int和double类型数组平均值的计算。这样可以利用函数重载的概念,让同一个函数名处理不同类型的数据。以下是一个示例:
```cpp
#include <vector>
#include <type_traits>
template <typename T>
double calculateAverage(const std::vector<T>& arr) {
static_assert(std::is_arithmetic<T>::value, "Only arithmetic types are supported");
double sum = 0.0;
for (const auto& elem : arr) {
sum += elem;
}
return sum / arr.size();
}
// 函数重载实现
double calculateAverage(const std::vector<int>& intArr) {
return calculateAverage<int>(intArr);
}
double calculateAverage(const std::vector<double>& doubleArr) {
return calculateAverage<double>(doubleArr);
}
int main() {
std::vector<int> intArray = {1, 2, 3, 4, 5};
std::vector<double> doubleArray = {1.0, 2.0, 3.0, 4.0, 5.0};
double intAvg = calculateAverage(intArray);
double doubleAvg = calculateAverage(doubleArray);
std::cout << "Integer array average: " << intAvg << std::endl;
std::cout << "Double array average: " << doubleAvg << std::endl;
return 0;
}
```
这个例子中,`calculateAverage`模板函数接受一个`std::vector`类型的参数,然后根据参数的实际类型计算平均值。如果尝试传递非数值类型的数组,程序会触发静态断言错误。
阅读全文