代码其实很简单,我们只需要知道set类的使用方法就可以了,比如迭代器的定义( set::iterator it=a.begin() ),和简单的insert函数插入,以及find函数找到时返回对应的迭代器,找不到时返回该set的end。
#include
#include
#define T int
using namespace std;
void ShowSet(set V)
{
set::iterator it=V.begin();
for (;it!=V.end();it++) {
cout<
}
cout<
}
void inte(seta,setb)
{
set::iterator it=a.begin();
for (;it!=a.end();it++) {
if (b.find(*it)!=b.end()) {
cout<
}
}
cout<
}
void Sub(seta,setb)
{
set::iterator it=a.begin();
for (;it!=a.end();it++) {
if (b.find(*it)!=b.end())
continue;
cout<
}
cout<
}
void unio(seta,setb,setc)
{
set::iterator it=a.begin();
for (;it!=a.end();it++) {
c.insert(*it);
}
it=b.begin();
for (;it!=b.end();it++) {
c.insert(*it);
}
ShowSet(c);
}
int main()
{
set a,b,c;
T em;
//while (cin>>ch&&ch!='0')
//{
//a.insert(ch-'0');
//}
//ShowSet(a);
int num1,num2;
cout<
cin>>num1>>num2;
while (num1--) {
cin>>em;
a.insert(em);
}
while (num2--) {
cin>>em;
b.insert(em);
}
cout<
<
char ch;
while (cin>>ch) {
if (ch=='I') {
inte(a,b);
}
else if (ch=='U') {
unio(a,b,c);
}
else if (ch=='S') {
bool is;
cout<
cin>>is;
if (is==1)
Sub(a,b);
else
Sub(b,a);
}
else
cout<
}
return 0;
}
/*测试数据:
5 5
1 2 3 4 5
1 2 7 8 9
I
U
S
1
S
0
*/