.设计支持集合操作的类模板,适合数值类型,设计适当的成员函数,实现支持添加,删除元素,求和,求平均值,查找,排序。在主函数创建对象,调用已完成的函数
时间: 2024-03-12 07:46:47 浏览: 15
好的,以下是一个支持集合操作的类模板的设计,适合数值类型:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
template<typename T>
class Collection {
public:
Collection() {}
~Collection() {}
// 添加元素
void add(const T& item) {
data_.push_back(item);
}
// 删除元素
void remove(const T& item) {
auto it = std::find(data_.begin(), data_.end(), item);
if (it != data_.end()) {
data_.erase(it);
}
}
// 求和
T sum() const {
T result = T();
for (const auto& item : data_) {
result += item;
}
return result;
}
// 求平均值
double average() const {
if (data_.empty()) {
return 0.0;
}
return static_cast<double>(sum()) / data_.size();
}
// 查找元素
bool contains(const T& item) const {
auto it = std::find(data_.begin(), data_.end(), item);
return it != data_.end();
}
// 排序
void sort() {
std::sort(data_.begin(), data_.end());
}
// 打印集合
void print() const {
for (const auto& item : data_) {
std::cout << item << " ";
}
std::cout << std::endl;
}
private:
std::vector<T> data_;
};
```
然后在主函数中,可以创建一个`Collection`对象,并调用已完成的函数进行测试:
```c++
int main() {
Collection<int> coll;
coll.add(1);
coll.add(2);
coll.add(3);
coll.add(4);
coll.add(5);
std::cout << "Original collection: ";
coll.print();
std::cout << "Sum: " << coll.sum() << std::endl;
std::cout << "Average: " << coll.average() << std::endl;
int target = 3;
std::cout << target << " is " << (coll.contains(target) ? "in" : "not in") << " the collection." << std::endl;
coll.remove(3);
std::cout << "Collection after removing " << target << ": ";
coll.print();
coll.sort();
std::cout << "Collection after sorting: ";
coll.print();
return 0;
}
```
输出结果如下:
```
Original collection: 1 2 3 4 5
Sum: 15
Average: 3
3 is in the collection.
Collection after removing 3: 1 2 4 5
Collection after sorting: 1 2 4 5
```