帮我写一个C++类模板,实现对数组的求和、排序、查找、倒置
时间: 2023-07-10 08:05:10 浏览: 192
各种排序算法的C++模板类实现
以下是一个简单的 C++ 类模板,实现了对数组的求和、排序、查找和倒置操作。
```c++
#include <iostream>
#include <algorithm>
template <typename T, size_t N>
class Array {
public:
Array() = default;
// 计算数组中所有元素的和
T sum() const {
T s = 0;
for (size_t i = 0; i < N; ++i) {
s += data[i];
}
return s;
}
// 对数组进行排序
void sort() {
std::sort(data, data + N);
}
// 在数组中查找指定的元素
bool search(const T& val) const {
for (size_t i = 0; i < N; ++i) {
if (data[i] == val) {
return true;
}
}
return false;
}
// 倒置数组元素的顺序
void reverse() {
std::reverse(data, data + N);
}
// 访问数组元素的方法
T& operator[](size_t i) {
return data[i];
}
const T& operator[](size_t i) const {
return data[i];
}
private:
T data[N];
};
int main() {
Array<int, 5> arr = {1, 2, 3, 4, 5};
std::cout << "sum: " << arr.sum() << '\n';
std::cout << "original array: ";
for (size_t i = 0; i < 5; ++i) {
std::cout << arr[i] << ' ';
}
std::cout << '\n';
arr.sort();
std::cout << "sorted array: ";
for (size_t i = 0; i < 5; ++i) {
std::cout << arr[i] << ' ';
}
std::cout << '\n';
if (arr.search(3)) {
std::cout << "3 is found in the array.\n";
} else {
std::cout << "3 is not found in the array.\n";
}
arr.reverse();
std::cout << "reversed array: ";
for (size_t i = 0; i < 5; ++i) {
std::cout << arr[i] << ' ';
}
std::cout << '\n';
return 0;
}
```
该类模板的用法如下:
```c++
Array<int, 5> arr = {1, 2, 3, 4, 5};
```
其中,`int` 表示数组元素的类型,`5` 表示数组的大小。在初始化时,大括号内的数字依次给出了数组的元素值。
实现的四个操作分别为:
- `sum()`:计算数组中所有元素的和;
- `sort()`:对数组进行排序;
- `search(const T& val)`:在数组中查找指定的元素;
- `reverse()`:倒置数组元素的顺序。
这些操作的具体实现可以在类模板的成员函数中找到。在主函数中,我们使用这些操作来处理数组,并输出结果。
阅读全文