帮我写一个C++类模板,实现对数组的求和与排序
时间: 2023-09-03 20:24:48 浏览: 155
### 回答1:
好的。
这是一个 C++ 类模板,实现对数组的求和与排序的功能:
```
template <typename T>
class ArrayHelper {
public:
ArrayHelper(T* arr, int size) : arr_(arr), size_(size) {}
T Sum() {
T sum = 0;
for (int i = 0; i < size_; i++) {
sum += arr_[i];
}
return sum;
}
void Sort() {
std::sort(arr_, arr_ + size_);
}
private:
T* arr_;
int size_;
};
```
使用方法:
```
int main() {
int arr[] = {3, 2, 1};
ArrayHelper<int> helper(arr, 3);
int sum = helper.Sum(); // 输出 6
helper.Sort(); // 数组变为 {1, 2, 3}
return 0;
}
```
希望这能帮到你。
### 回答2:
你好!以下是一个简单的C++类模板,实现了对数组的求和和排序功能:
```cpp
#include <iostream>
using namespace std;
template <class T>
class ArrayUtils {
private:
T* arr; // 数组指针
int size; // 数组大小
public:
// 构造函数
ArrayUtils(T* arr, int size) {
this->arr = arr;
this->size = size;
}
// 求和函数
T sum() {
T sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum;
}
// 排序函数(使用冒泡排序)
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 main() {
int arr[] = { 5, 2, 8, 3, 1 };
int size = sizeof(arr) / sizeof(arr[0]);
ArrayUtils<int> utils(arr, size);
cout << "数组的和为:" << utils.sum() << endl;
cout << "排序前的数组:";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
utils.sort();
cout << "排序后的数组:";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在这个例子中,我们使用了一个`ArrayUtils`类模板,它接受一个类型`T`作为参数。构造函数接受一个指向数组的指针和数组的大小。然后,我们可以使用`sum()`函数来计算数组的和,使用`sort()`函数来对数组进行排序。
在`main()`函数中,我们创建了一个`int`类型的数组和一个`ArrayUtils`实例。首先,我们调用`sum()`函数来计算数组的和,并将结果输出到控制台。然后,我们先输出排序前的数组,然后调用`sort()`函数对数组进行排序。最后,我们输出排序后的数组。
当然,你也可以根据自己的需求修改此类模板,并自由扩展其他函数和方法。希望这个例子能对你有所帮助!
### 回答3:
以下是一个使用C++类模板实现对数组求和与排序的例子:
```cpp
#include <iostream>
#include <algorithm>
// 数组求和与排序的模板类
template <typename T>
class ArrayHandler {
public:
ArrayHandler(T* array, int size) : data(array), length(size) {}
// 求和函数
T sum() {
T result = 0;
for (int i = 0; i < length; ++i) {
result += data[i];
}
return result;
}
// 排序函数
void sort() {
std::sort(data, data + length);
}
// 打印数组函数(用于测试)
void printArray() {
for (int i = 0; i < length; ++i) {
std::cout << data[i] << " ";
}
std::cout << std::endl;
}
private:
T* data; // 数组数据
int length; // 数组长度
};
// 测试
int main() {
int intArray[] = {5, 3, 8, 2, 9};
double doubleArray[] = {2.6, 4.1, 1.8, 3.7, 0.9};
ArrayHandler<int> intHandler(intArray, sizeof(intArray) / sizeof(int));
int intSum = intHandler.sum();
std::cout << "Int Array Sum: " << intSum << std::endl;
ArrayHandler<double> doubleHandler(doubleArray, sizeof(doubleArray) / sizeof(double));
doubleHandler.sort();
std::cout << "Sorted Double Array: ";
doubleHandler.printArray();
return 0;
}
```
运行该程序,将得到以下输出:
Int Array Sum: 27
Sorted Double Array: 0.9 1.8 2.6 3.7 4.1
阅读全文