用 c++定义一个类实现集合的交并差集
时间: 2024-09-10 10:08:23 浏览: 64
在C++中,可以用类来实现集合的交并差集。下面是一个示例代码:
```cpp
#include <iostream>
#include <set>
using namespace std;
class Set {
private:
set<int> s;
public:
Set() {}
Set(set<int> s) : s(s) {}
Set operator+(Set &rhs) {
set<int> res;
set_union(s.begin(), s.end(), rhs.s.begin(), rhs.s.end(), inserter(res, res.begin()));
return Set(res);
}
Set operator-(Set &rhs) {
set<int> res;
set_difference(s.begin(), s.end(), rhs.s.begin(), rhs.s.end(), inserter(res, res.begin()));
return Set(res);
}
Set operator*(Set &rhs) {
set<int> res;
set_intersection(s.begin(), s.end(), rhs.s.begin(), rhs.s.end(), inserter(res, res.begin()));
return Set(res);
}
void print() {
for (auto x : s) {
cout << x << " ";
}
cout << endl;
}
};
int main() {
set<int> s1 = {1, 2, 3};
set<int> s2 = {2, 3, 4};
Set a(s1), b(s2);
cout << "集合a:";
a.print();
cout << "集合b:";
b.print();
cout << "集合a与集合b的并:";
Set c = a + b;
c.print();
cout << "集合a与集合b的交:";
Set d = a * b;
d.print();
cout << "集合a与集合b的差:";
Set e = a - b;
e.print();
return 0;
}
```
上面的代码中,我们定义了一个`Set`类,并实现了交、并、差集的操作。`operator+`函数实现了并集,`operator-`函数实现了差集,`operator*`函数实现了交集。然后,我们在`main`函数中创建两个集合`s1`和`s2`,分别初始化为{1,2,3}和{2,3,4},然后将它们转换为`Set`类型的对象`a`和`b`,最后分别调用`+`、`-`、`*`函数,输出结果即可。
阅读全文