使用c++编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。
时间: 2023-06-25 07:03:35 浏览: 114
以下是使用数组类模板Array对数组进行排序、求最大值和求元素和的程序:
```cpp
#include <iostream>
#include "Array.h"
using namespace std;
int main()
{
// 创建一个长度为5的整型数组并初始化
Array<int, 5> arr = { 4, 2, 8, 5, 1 };
// 打印原始数组
cout << "原始数组:";
arr.print();
// 对数组进行排序
arr.sort();
// 打印排序后的数组
cout << "排序后的数组:";
arr.print();
// 求最大值
cout << "最大值:" << arr.max() << endl;
// 求元素和
cout << "元素和:" << arr.sum() << endl;
return 0;
}
```
其中,Array类模板的定义如下:
```cpp
template <typename T, int N>
class Array
{
private:
T data[N];
public:
// 构造函数
Array() {}
// 拷贝构造函数
Array(const Array& other) {
for (int i = 0; i < N; i++) {
data[i] = other.data[i];
}
}
// 赋值运算符重载
Array& operator=(const Array& other) {
if (this != &other) {
for (int i = 0; i < N; i++) {
data[i] = other.data[i];
}
}
return *this;
}
// 下标运算符重载
T& operator[](int i) {
return data[i];
}
// 打印数组
void print() const {
for (int i = 0; i < N; i++) {
cout << data[i] << " ";
}
cout << endl;
}
// 对数组进行排序
void sort() {
for (int i = 0; i < N - 1; i++) {
for (int j = i + 1; j < N; j++) {
if (data[i] > data[j]) {
T temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
// 求最大值
T max() const {
T maxVal = data[0];
for (int i = 1; i < N; i++) {
if (data[i] > maxVal) {
maxVal = data[i];
}
}
return maxVal;
}
// 求元素和
T sum() const {
T sumVal = 0;
for (int i = 0; i < N; i++) {
sumVal += data[i];
}
return sumVal;
}
};
```
我们使用以下数据进行测试:
```cpp
Array<int, 5> arr = { 4, 2, 8, 5, 1 };
```
输出结果如下:
```
原始数组:4 2 8 5 1
排序后的数组:1 2 4 5 8
最大值:8
元素和:20
```
阅读全文