改造Set类,重载+(并集)、(-)差集、*(交集)、<<(输出)、>>(输入)和函数调用操作符(添加一个元素)
时间: 2024-03-15 14:47:06 浏览: 172
好的,我可以帮你改造Set类,并重载这些运算符和操作符。以下是示例代码:
```c++
#include <iostream>
#include <set>
using namespace std;
class Set
{
private:
set<int> data;
public:
Set() {}
Set(const set<int> &s) : data(s) {}
Set operator+(const Set &s) const
{
Set res(data);
for (auto x : s.data)
{
res.data.insert(x);
}
return res;
}
Set operator-(const Set &s) const
{
Set res(data);
for (auto x : s.data)
{
res.data.erase(x);
}
return res;
}
Set operator*(const Set &s) const
{
Set res;
for (auto x : data)
{
if (s.data.count(x))
{
res.data.insert(x);
}
}
return res;
}
friend ostream &operator<<(ostream &os, const Set &s)
{
os << "{ ";
for (auto x : s.data)
{
os << x << " ";
}
os << "}";
return os;
}
friend istream &operator>>(istream &is, Set &s)
{
int x;
while (is >> x)
{
s.data.insert(x);
}
return is;
}
void operator()(const int &x)
{
data.insert(x);
}
};
int main()
{
Set s1, s2;
cin >> s1 >> s2;
Set s3 = s1 + s2;
Set s4 = s1 - s2;
Set s5 = s1 * s2;
cout << s3 << endl;
cout << s4 << endl;
cout << s5 << endl;
s1(10);
s1(20);
cout << s1 << endl;
return 0;
}
```
在这个改造后的Set类中,我们重载了+、-、*、<<、>> 和 () 操作符。其中,+、-、* 运算符分别表示集合的并集、差集和交集;<< 和 >> 运算符分别表示输出和输入集合;() 操作符用于添加元素到集合中。
你可以在主函数中看到这些操作符的具体使用方法,以及如何创建和操作集合。
阅读全文