不用#include <vector> #include <algorithm>头文件,设计支持集合操作的类模板,适合数值类型,设计适当的成员函数,实现支持添加,删除元素,求和,求平均值,查找,排序。在主函数创建对象,调用已完成的函数。
时间: 2024-03-23 09:37:54 浏览: 54
C++常用的#include头文件总结
好的,我可以给你提供一个简单的实现。以下是一个名为 `NumericSet` 的类模板,它支持整数类型的数值,并实现了添加、删除元素,求和、求平均值,查找和排序等功能。
```c++
template <typename T>
class NumericSet {
private:
std::vector<T> nums;
public:
void add(T num) {
nums.push_back(num);
}
void remove(T num) {
nums.erase(std::remove(nums.begin(), nums.end(), num), nums.end());
}
T sum() const {
T result = 0;
for (const T& num : nums) {
result += num;
}
return result;
}
double average() const {
if (nums.empty()) {
return 0;
}
return static_cast<double>(sum()) / nums.size();
}
bool contains(T num) const {
return std::find(nums.begin(), nums.end(), num) != nums.end();
}
void sort() {
std::sort(nums.begin(), nums.end());
}
};
```
在这个实现中,我们使用了 `std::vector` 容器来存储数值。`add` 和 `remove` 函数分别用于添加和删除元素,`sum` 函数用于求和,`average` 函数用于求平均值,`contains` 函数用于查找元素是否存在于集合中,`sort` 函数用于对集合进行排序。
以下是一个示例代码,展示如何使用 `NumericSet` 类模板:
```c++
#include <iostream>
int main() {
NumericSet<int> nums;
nums.add(3);
nums.add(1);
nums.add(4);
nums.add(1);
nums.add(5);
std::cout << "Sum: " << nums.sum() << std::endl;
std::cout << "Average: " << nums.average() << std::endl;
std::cout << "Contains 3? " << nums.contains(3) << std::endl;
std::cout << "Contains 2? " << nums.contains(2) << std::endl;
nums.remove(1);
nums.sort();
std::cout << "Sorted nums: ";
for (int num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果如下:
```
Sum: 14
Average: 2.8
Contains 3? 1
Contains 2? 0
Sorted nums: 3 4 5
```
希望这个实现能够对你有所帮助。
阅读全文