设计支持集合操作的类模板,适合数值类型,设计适当的成员函数,实现支持添加,删除元素,求和,求平均值,查找,排序。在主函数创建对象,调用已完成的函数
时间: 2024-03-17 14:44:56 浏览: 51
编程_集合运算_类模板_源码
好的,我可以为您提供一个适合数值类型的支持集合操作的类模板的实现示例,如下所示:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
template <typename T>
class NumericCollection {
private:
std::vector<T> data;
public:
// 添加元素
void add(const T& elem) {
data.push_back(elem);
}
// 删除元素
void remove(const T& elem) {
data.erase(std::remove(data.begin(), data.end(), elem), data.end());
}
// 求和
T sum() const {
T res = 0;
for (const auto& elem : data) {
res += elem;
}
return res;
}
// 求平均值
double average() const {
if (data.empty()) {
return 0;
}
return static_cast<double>(sum()) / data.size();
}
// 查找元素
bool contains(const T& elem) const {
return std::find(data.begin(), data.end(), elem) != data.end();
}
// 排序
void sort() {
std::sort(data.begin(), data.end());
}
// 打印元素
void print() const {
for (const auto& elem : data) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
};
int main() {
NumericCollection<int> nc;
nc.add(1);
nc.add(2);
nc.add(3);
nc.print(); // 1 2 3
nc.remove(2);
nc.print(); // 1 3
std::cout << "sum: " << nc.sum() << std::endl; // sum: 4
std::cout << "average: " << nc.average() << std::endl; // average: 2
std::cout << "contains 1: " << nc.contains(1) << std::endl; // contains 1: 1
std::cout << "contains 2: " << nc.contains(2) << std::endl; // contains 2: 0
nc.sort();
nc.print(); // 1 3
return 0;
}
```
这个类模板支持添加元素、删除元素、求和、求平均值、查找元素以及排序。在主函数中,我们创建了一个NumericCollection对象nc,向其中添加了1、2、3三个元素,然后删除了2,打印剩下的元素,计算其和与平均值,查找元素1和2,排序并打印元素。
阅读全文