3使用类模板编写一程序,要求该程序可以对数组元素进行求和、求最大值操作;通过一个int型数组和double型数组的实例进行测试。
时间: 2024-09-18 09:00:45 浏览: 45
在C++中,我们可以使用类模板(Template)来创建一个通用的算法类,这个类可以处理不同类型的数组元素。这里我们将定义一个模板类,包含求和`Sum`和求最大值`Max`的方法。然后,我们会为整数类型`int`和双精度类型`double`分别创建两个实例。
首先,我们定义一个名为`ArrayOperations`的模板类:
```cpp
#include <iostream>
// 模板类 ArrayOperations,提供求和和求最大值的方法
template <typename T>
class ArrayOperations {
public:
// 求和函数
static T sum(const T* arr, int size) {
T total = arr[0];
for (int i = 1; i < size; ++i) {
total += arr[i];
}
return total;
}
// 求最大值函数
static T max(const T* arr, int size) {
T max_value = arr[0];
for (int i = 1; i < size; ++i) {
if (arr[i] > max_value) {
max_value = arr[i];
}
}
return max_value;
}
};
int main() {
// 对于 int 类型数组
int int_array[] = {1, 2, 3, 4, 5};
std::cout << "Sum of integer array: " << ArrayOperations<int>::sum(int_array, sizeof(int_array) / sizeof(int)) << "\n";
std::cout << "Max value in integer array: " << ArrayOperations<int>::max(int_array, sizeof(int_array) / sizeof(int)) << "\n";
// 对于 double 类型数组
double double_array[] = {1.1, 2.2, 3.3, 4.4, 5.5};
std::cout << "Sum of double array: " << ArrayOperations<double>::sum(double_array, sizeof(double_array) / sizeof(double)) << "\n";
std::cout << "Max value in double array: " << ArrayOperations<double>::max(double_array, sizeof(double_array) / sizeof(double)) << "\n";
return 0;
}
```
在这个例子中,我们使用了模板参数`T`,它可以是任意数据类型,如`int`或`double`。`ArrayOperations<T>`类中的`sum`和`max`方法根据`T`的类型进行相应操作。
阅读全文