用c++编写一个使用类模板对数组进行排序,查找和求元素和的程序
时间: 2024-02-11 07:05:42 浏览: 99
好的,以下是一个使用类模板对数组进行排序、查找和求元素和的C++程序:
```cpp
#include <iostream>
#include <algorithm>
template<typename T>
class Array {
private:
T* ptr;
int size;
public:
Array(T arr[], int s);
void sort();
int search(T key);
T sum();
};
template<typename T>
Array<T>::Array(T arr[], int s) {
ptr = new T[s];
size = s;
for (int i = 0; i < size; i++)
ptr[i] = arr[i];
}
template<typename T>
void Array<T>::sort() {
std::sort(ptr, ptr + size);
}
template<typename T>
int Array<T>::search(T key) {
for (int i = 0; i < size; i++) {
if (ptr[i] == key)
return i;
}
return -1;
}
template<typename T>
T Array<T>::sum() {
T s = 0;
for (int i = 0; i < size; i++)
s += ptr[i];
return s;
}
int main() {
int arr[] = { 5, 3, 2, 8, 1, 4 };
Array<int> a(arr, 6);
a.sort();
std::cout << "Sorted array: ";
for (int i = 0; i < 6; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
std::cout << "Index of 3: " << a.search(3) << std::endl;
std::cout << "Sum of array: " << a.sum() << std::endl;
return 0;
}
```
程序中定义了一个模板类 `Array`,其中模板参数 `T` 表示数组元素类型。在类中定义了一个动态分配内存的数组指针 `ptr` 和数组大小 `size`,并通过构造函数初始化数组。类中还定义了排序、查找和求元素和三个成员函数,均能够处理不同类型的数组元素。
在 `main` 函数中,我们创建了一个整型数组,并使用 `Array<int>` 模板实例化了一个 `Array` 类型的对象 `a`。通过调用 `a` 的成员函数可以对数组进行排序、查找和求元素和操作,并输出结果。
阅读全文