编写一个程序。使用类模板对数组元素进行排序和求和。产生类型实参分别为int型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。
时间: 2023-06-26 11:08:22 浏览: 60
下面是一个示例程序,使用类模板对数组元素进行排序和求和。它展示了如何定义两个模板类,分别对int型数组和double型数组进行排序和求和操作。
```cpp
#include <iostream>
#include <algorithm>
template <typename T>
class Array {
public:
Array(T* data, int size) : m_data(data), m_size(size) {}
void sort() {
std::sort(m_data, m_data + m_size);
}
T sum() {
T s = 0;
for (int i = 0; i < m_size; ++i)
s += m_data[i];
return s;
}
private:
T* m_data;
int m_size;
};
int main() {
int a[] = { 3, 1, 4, 1, 5, 9, 2, 6 };
double b[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
Array<int> ai(a, 8);
Array<double> ad(b, 5);
ai.sort();
ad.sort();
std::cout << "Sorted integers: ";
for (int i = 0; i < 8; ++i)
std::cout << a[i] << " ";
std::cout << "\n";
std::cout << "Sorted doubles: ";
for (int i = 0; i < 5; ++i)
std::cout << b[i] << " ";
std::cout << "\n";
std::cout << "Sum of integers: " << ai.sum() << "\n";
std::cout << "Sum of doubles: " << ad.sum() << "\n";
return 0;
}
```
在这个示例中,我们定义了一个Array类模板,它接受一个类型参数T,并提供了两个成员函数sort和sum。sort函数使用STL的std::sort算法对数组元素进行排序,sum函数计算数组元素的和。
在main函数中,我们声明了一个int型数组a和一个double型数组b,然后使用Array<int>和Array<double>分别实例化了两个模板类ai和ad。我们对这两个实例调用了sort和sum函数,并输出了结果。
输出结果如下:
```
Sorted integers: 1 1 2 3 4 5 6 9
Sorted doubles: 1.1 2.2 3.3 4.4 5.5
Sum of integers: 31
Sum of doubles: 16.5
```
可以看到,程序正确地对两个数组进行了排序,并计算了它们的和。这个示例展示了类模板的基本用法,可以轻松地扩展到其他类型和操作。