用C++编写一个使用类模板对数组进行排序、查找和求元素和的程序。
时间: 2023-11-22 16:54:00 浏览: 134
用c++实现一个类模板
以下是一个使用类模板对数组进行排序、查找和求元素和的示例程序:
```cpp
#include <iostream>
using namespace std;
template <typename T>
class ArrayTool {
public:
// 排序(冒泡排序)
static void sort(T arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
T temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 查找
static int search(T arr[], int len, T value) {
for (int i = 0; i < len; i++) {
if (arr[i] == value) {
return i;
}
}
return -1;
}
// 求元素和
static T sum(T arr[], int len) {
T result = 0;
for (int i = 0; i < len; i++) {
result += arr[i];
}
return result;
}
};
int main() {
int arr1[] = { 5, 3, 2, 4, 1 };
double arr2[] = { 3.14, 2.71, 1.62, 4.38 };
ArrayTool<int>::sort(arr1, 5);
ArrayTool<double>::sort(arr2, 4);
cout << "arr1: ";
for (int i = 0; i < 5; i++) {
cout << arr1[i] << " ";
}
cout << endl;
cout << "arr2: ";
for (int i = 0; i < 4; i++) {
cout << arr2[i] << " ";
}
cout << endl;
int index1 = ArrayTool<int>::search(arr1, 5, 3);
int index2 = ArrayTool<double>::search(arr2, 4, 4.38);
cout << "index1: " << index1 << endl;
cout << "index2: " << index2 << endl;
int sum1 = ArrayTool<int>::sum(arr1, 5);
double sum2 = ArrayTool<double>::sum(arr2, 4);
cout << "sum1: " << sum1 << endl;
cout << "sum2: " << sum2 << endl;
return 0;
}
```
该程序定义了一个模板类 `ArrayTool`,其中包含了对数组进行排序、查找和求元素和的静态方法。在 `main` 函数中,我们分别使用了 `ArrayTool<int>` 和 `ArrayTool<double>` 对两个不同类型的数组进行操作。通过使用模板类,我们可以避免为不同类型的数组分别编写相同的排序、查找和求元素和的代码。
阅读全文