定义一个Array类模板,其中的数据成员是一个具有5个元素的一维数组,类中包含构造函数和一个找最大值的函数。通过这个类模板可以分别查找int、double、string类型一维数组中的最大值。要求写出主函数
时间: 2023-06-04 09:02:36 浏览: 119
C++实现一个二维数组类
好的,让我来回答你的问题:
定义一个Array类模板,具有5个元素的一维数组,实现了查找int、double、string类型一维数组中的最大值。
首先,我们需要定义一个Array类模板。这个模板中的数据成员是一个具有5个元素的一维数组。具体实现如下:
```
template <typename T>
class Array {
private:
T data[5];
public:
Array(T arr[]) {
for (int i = 0; i < 5; i++) {
data[i] = arr[i];
}
}
T max() {
T max = data[0];
for (int i = 1; i < 5; i++) {
if (data[i] > max) {
max = data[i];
}
}
return max;
}
};
```
在这个模板中,我们定义了一个构造函数,它将一个传递进来的数组赋值给模板中的数组。我们还定义了一个找最大值的函数max(),它遍历数组并返回最大值。
接下来,我们需要在主函数中使用这个模板类查找int、double、string类型数组中的最大值。具体实现如下:
```
#include <iostream>
#include <string>
using namespace std;
int main() {
// 查找int数组中的最大值
int arr1[5] = {2, 6, 7, 1, 9};
Array<int> a1(arr1);
cout << "int数组中的最大值为:" << a1.max() << endl;
// 查找double数组中的最大值
double arr2[5] = {3.4, 7.8, 1.2, 5.6, 9.1};
Array<double> a2(arr2);
cout << "double数组中的最大值为:" << a2.max() << endl;
// 查找string数组中的最大值
string arr3[5] = {"apple", "orange", "banana", "pear", "strawberry"};
Array<string> a3(arr3);
cout << "string数组中的最大值为:" << a3.max() << endl;
return 0;
}
```
在主函数中,我们首先定义了一个int数组、一个double数组和一个string数组,然后分别将它们传递给Array类模板的构造函数。在调用max()函数时,我们指定了模板参数类型,以查找不同类型数组中的最大值。最后,我们输出了每个数组中的最大值。
希望这个回答能够帮助到你!
阅读全文