.设计支持集合操作的类模板,适合数值类型,设计适当的成员函数,实现支持添加,删除元素,求和,求平均值,查找,排序。在主函数创建对象,调用已完成的函数
时间: 2024-03-25 08:36:10 浏览: 16
好的,我可以为您提供一个适合数值类型的集合类模板的设计。下面是代码示例:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
template<typename T>
class Collection {
private:
std::vector<T> data;
public:
// 添加元素
void add(T value) {
data.push_back(value);
}
// 删除元素
void remove(T value) {
auto it = std::find(data.begin(), data.end(), value);
if (it != data.end()) {
data.erase(it);
}
}
// 求和
T sum() const {
T result = 0;
for (const auto& value : data) {
result += value;
}
return result;
}
// 求平均值
double average() const {
if (data.empty()) {
return 0;
}
return static_cast<double>(sum()) / data.size();
}
// 查找元素
bool contains(T value) const {
return std::find(data.begin(), data.end(), value) != data.end();
}
// 排序
void sort() {
std::sort(data.begin(), data.end());
}
};
int main() {
Collection<int> collection;
collection.add(1);
collection.add(2);
collection.add(3);
std::cout << "sum: " << collection.sum() << std::endl;
std::cout << "average: " << collection.average() << std::endl;
std::cout << "contains 2: " << collection.contains(2) << std::endl;
std::cout << "contains 4: " << collection.contains(4) << std::endl;
collection.sort();
std::cout << "after sort: ";
for (const auto& value : collection) {
std::cout << value << " ";
}
std::cout << std::endl;
collection.remove(2);
std::cout << "after remove 2: ";
for (const auto& value : collection) {
std::cout << value << " ";
}
std::cout << std::endl;
return 0;
}
```
该类模板使用了std::vector作为内部数据存储,提供了添加、删除元素、求和、求平均值、查找和排序功能,适用于任何数值类型。在主函数中,我们创建了一个Collection<int>类型的对象collection,并对其进行了添加、删除、求和、求平均数、查找和排序的操作。