使用类模板编写一程序,要求该程序可以对数组元素进行求和、求最大值操作;通过一个int型数组和double型数组的实例进行测试。使用c++语言,具体代码
时间: 2024-09-11 12:08:04 浏览: 59
在C++中,你可以创建一个模板类`ArrayOperations`来执行对不同类型的数组(如`int`和`double`)的操作,包括求和和求最大值。这里有一个简单的实现:
```cpp
#include <iostream>
#include <algorithm> // 包含用于找到最大值的算法
// 定义一个模板类,适用于整数和双精度浮点数
template<typename T>
class ArrayOperations {
public:
// 构造函数接收数组并计算总和
ArrayOperations(T* arr, size_t size) : array(arr), size(size) {
totalSum = std::accumulate(array, array + size, T{});
}
// 求和函数
T getSum() const {
return totalSum;
}
// 求最大值函数
T getMaxValue() const {
return *std::max_element(array, array + size);
}
private:
T* array; // 数组指针
size_t size; // 数组大小
T totalSum = T{}; // 总和初始为0
};
int main() {
// 使用int型数组
int intArray[] = {1, 2, 3, 4, 5};
ArrayOperations<int> intOps(intArray, sizeof(intArray) / sizeof(int));
std::cout << "Int array sum: " << intOps.getSum() << "\n";
std::cout << "Int array max: " << intOps.getMaxValue() << "\n";
// 使用double型数组
double doubleArray[] = {1.1, 2.2, 3.3, 4.4, 5.5};
ArrayOperations<double> doubleOps(doubleArray, sizeof(doubleArray) / sizeof(double));
std::cout << "Double array sum: " << doubleOps.getSum() << "\n";
std::cout << "Double array max: " << doubleOps.getMaxValue() << "\n";
return 0;
}
```
阅读全文