用C++编写一个使用类模板对数组进行排序、查找和求元素和的程序
时间: 2023-12-10 07:38:56 浏览: 90
以下是一个使用类模板对数组进行排序、查找和求元素和的示例程序:
```c++
#include <iostream>
#include <algorithm>
template<typename T, int size>
class Array {
private:
T arr[size];
public:
void sort() {
std::sort(arr, arr + size);
}
int find(T val) {
for (int i = 0; i < size; i++) {
if (arr[i] == val) {
return i;
}
}
return -1;
}
T sum() {
T total = 0;
for (int i = 0; i < size; i++) {
total += arr[i];
}
return total;
}
void print() {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
void fill(T val) {
for (int i = 0; i < size; i++) {
arr[i] = val;
}
}
void set(int pos, T val) {
arr[pos] = val;
}
T get(int pos) {
return arr[pos];
}
};
int main() {
Array<int, 5> nums;
nums.fill(0);
nums.set(0, 2);
nums.set(1, 5);
nums.set(2, 1);
nums.set(3, 4);
nums.set(4, 3);
nums.print();
nums.sort();
nums.print();
std::cout << "Index of 4: " << nums.find(4) << std::endl;
std::cout << "Sum: " << nums.sum() << std::endl;
return 0;
}
```
该程序定义了一个模板类 `Array`,它有一个私有成员变量 `arr` 表示数组,以及一些公共成员函数,包括排序、查找、求和、打印、填充、设置和获取元素等。
在 `main` 函数中,我们实例化了一个 `Array<int, 5>` 类型的对象 `nums`,并通过 `fill` 方法将其初始化为 `[2, 5, 1, 4, 3]`。然后我们调用了其它方法对数组进行了排序、查找和求和,并将结果打印出来。
注意,模板类中的成员函数的实现需要放在头文件中,否则在链接时会出现 undefined reference 错误。
阅读全文