用c++编写一个使用类模板对数组进行排序,查找和求元素和的程序
时间: 2023-12-10 12:38:21 浏览: 125
以下是一个使用类模板对数组进行排序、查找和求元素和的程序:
```cpp
#include <iostream>
using namespace std;
template <class T>
class Array {
private:
T* arr;
int size;
public:
Array(int s) : size(s) {
arr = new T[size];
}
~Array() {
delete[] arr;
}
void input() {
cout << "Enter " << size << " elements: ";
for (int i = 0; i < size; i++) {
cin >> arr[i];
}
}
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;
}
}
}
}
int search(T key) {
for (int i = 0; i < size; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}
T sum() {
T sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum;
}
void display() {
cout << "Sorted array: ";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
};
int main() {
Array<int> a(5);
a.input();
a.sort();
a.display();
int key;
cout << "Enter the element to search: ";
cin >> key;
int index = a.search(key);
if (index == -1) {
cout << "Element not found" << endl;
} else {
cout << "Element found at index " << index << endl;
}
int sum = a.sum();
cout << "Sum of the elements: " << sum << endl;
return 0;
}
```
在这个程序中,`Array` 类是一个模板类,可以用来创建不同类型的数组。它有一个私有成员变量 `arr`,它是一个指向动态分配的数组的指针,还有一个私有成员变量 `size`,表示数组的大小。`Array` 类有一个构造函数和一个析构函数,用来分配和释放内存空间。
`Array` 类还有一些公有成员函数,用于输入数组元素、对数组进行排序、查找指定元素和计算元素总和等操作。这些成员函数都是模板函数,可以处理不同类型的数组。
在 `main` 函数中,我们首先创建了一个 `Array<int>` 对象 `a`,它是一个包含 5 个整数的数组。然后我们通过 `a.input()` 函数输入这个数组的元素,接着调用 `a.sort()` 函数对它进行排序,并用 `a.display()` 函数显示排序后的结果。
接下来,我们输入一个要查找的元素,调用 `a.search()` 函数查找这个元素在数组中的位置。如果查找成功,则返回该元素在数组中的下标;否则返回 -1。最后,我们调用 `a.sum()` 函数计算数组元素的总和,并将结果输出到屏幕上。
阅读全文