使用类模板对数组元素进行排序倒置查找和求和,产生类型实参分别为int和double类型。具有对数组元素进行排序,倒置求和查找等功能
时间: 2024-04-15 12:28:06 浏览: 86
下面是一个使用类模板对数组元素进行排序、倒置、查找和求和的示例代码:
```cpp
#include <iostream>
namespace std;
template <typename>
class ArrayUtils {
:
T* arr;
int size;
public:
ArrayUtils(T* arr, int size) {
this->arr = arr;
this->size = size;
}
void sort() {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
T temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void reverse() {
for (int i = 0; i < size / 2; i++) {
T temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
}
int search(T target) {
for (int i = 0; i < size; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}
T sum() {
T total = 0;
for (int i = 0; i < size; i++) {
total += arr[i];
}
return total;
}
};
int main() {
int intArr[] = {5, 2, 8, 3, 9};
ArrayUtils<int> intArrayUtils(intArr, 5);
double doubleArr[] = {3.14, 1.23, 4.56, 2.34};
ArrayUtils<double> doubleArrayUtils(doubleArr, 4);
cout << "排序前的 int 数组:" << endl;
for (int i = 0; i < 5; i++) {
cout << intArr[i] << " ";
}
cout << endl;
intArrayUtils.sort();
cout << "排序后的 int 数组:" << endl;
for (int i = 0; i < 5; i++) {
cout << intArr[i] << " ";
}
cout << endl;
cout << "倒置后的 double 数组:" << endl;
doubleArrayUtils.reverse();
for (int i = 0; i < 4; i++) {
cout << doubleArr[i] << " ";
}
cout << endl;
int target = 8;
int index = intArrayUtils.search(target);
if (index != -1) {
cout << "在 int 数组中找到了 " << target << ",索引位置为:" << index << endl;
} else {
cout << "在 int 数组中未找到 " << target << endl;
}
double sum = doubleArrayUtils.sum();
cout << "double 数组元素的总和为:" << sum << endl;
return 0;
}
```
在这个示例中,使用了类模板 `ArrayUtils` 对数组进行操作。该类模板包含了排序、倒置、查找和求和这几个功能。在 `main` 函数中,分别使用了 `int` 类型和 `double` 类型的数组来实例化 `ArrayUtils` 类模板,并进行相应的操作。
运行这段代码,可以看到输出结果如下:
```
排序前的 int 数组:
5 2 8 3 9
排序后的 int 数组:
2 3 5 8 9
倒置后的 double 数组:
2.34 4.56 1.23 3.14
在 int 数组中找到了 8,索引位置为:3
double 数组元素的总和为:11.27
```
通过类模板 `ArrayUtils`,可以对不同类型的数组进行排序、倒置、查找和求和等操作。
阅读全文