编写一个类模板对数组元素进行求和、排序
时间: 2024-10-20 15:07:47 浏览: 26
在编写一个类模板对数组元素进行求和和排序时,通常会创建一个通用的模板类,这个类接受任意类型的数组,并提供相应的操作方法。这里是一个简单的示例,我们将使用C++语言来展示:
```cpp
template <typename T>
class ArrayOperations {
public:
// 构造函数,接收一个动态大小的数组
ArrayOperations(T* arr, int size) : array(arr), size(size) {}
// 求和函数
T sum() const {
T total = 0;
for (int i = 0; i < size; ++i)
total += array[i];
return total;
}
// 冒泡排序函数(仅适用于数值型数组)
void bubbleSort() {
for (int i = 0; i < size - 1; ++i) {
for (int j = 0; j < size - 1 - i; ++j) {
if (array[j] > array[j + 1]) {
std::swap(array[j], array[j + 1]);
}
}
}
}
private:
T* array; // 数组指针
int size; // 数组长度
};
// 使用示例
int main() {
int numbers[] = {5, 2, 8, 1, 9};
ArrayOperations<int> ops(numbers, sizeof(numbers) / sizeof(numbers[0]));
// 求和
int sum = ops.sum();
std::cout << "Sum of elements: " << sum << std::endl;
// 排序(注意这不是一个通用排序算法,只适用于整数)
ops.bubbleSort();
std::cout << "Sorted array: ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个例子中,`ArrayOperations`模板类可以用于处理任何数据类型(如`int`, `float`, `double`等),只要支持加法运算。`bubbleSort`函数针对数值类型进行了优化,非数值类型的数组需要其他排序算法。
阅读全文