用C++编写一个使用类模板对数组进行排序、查找和求元素和的程序。
时间: 2024-03-05 10:52:04 浏览: 60
好的,以下是一个使用类模板对数组进行排序、查找和求元素和的程序:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
template <typename T, int N>
class Array {
public:
void sort() {
std::sort(arr, arr + N);
}
int search(T target) {
int l = 0, r = N - 1;
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] > target)
r = mid - 1;
else
l = mid + 1;
}
return -1; // 找不到返回-1
}
T sum() {
T res = 0;
for (int i = 0; i < N; i++)
res += arr[i];
return res;
}
void print() {
for (int i = 0; i < N; i++)
cout << arr[i] << " ";
cout << endl;
}
T& operator[](int idx) {
return arr[idx];
}
private:
T arr[N];
};
int main() {
Array<int, 5> arr1 = {3, 1, 4, 2, 5};
arr1.sort();
arr1.print(); // 输出:1 2 3 4 5
int idx1 = arr1.search(4);
cout << "idx1 = " << idx1 << endl; // 输出:idx1 = 3
int sum1 = arr1.sum();
cout << "sum1 = " << sum1 << endl; // 输出:sum1 = 15
Array<double, 3> arr2 = {1.1, 2.2, 3.3};
arr2[1] = 2.5; // 修改元素
arr2.sort();
arr2.print(); // 输出:1.1 2.5 3.3
double idx2 = arr2.search(2.5);
cout << "idx2 = " << idx2 << endl; // 输出:idx2 = 1
double sum2 = arr2.sum();
cout << "sum2 = " << sum2 << endl; // 输出:sum2 = 6.9
return 0;
}
```
可以看到,我们定义了一个Array类模板,它有三个成员函数:sort用于排序,search用于查找,sum用于求元素和。此外,我们还定义了一个print函数用于输出数组内容,一个[]运算符重载用于访问数组元素。
在main函数中,我们分别创建了两个Array对象,一个是int类型的,一个是double类型的。我们对这两个对象进行了排序、查找、求元素和等操作,并输出了结果。
希望我的回答能够帮到你,如果还有其他问题,可以继续问我哦!
阅读全文