编写一个程序,从键盘输入两组整数(可以看作是两个集合) //分别输出同属于两组的整数(即两个集合的交集) //属于至少一组的整数(即两个集合的并集) //属于第一组但不属于第二组的整数(即两个集合的差集) //程序中需要用到set_intersection, set_union, set_difference等算法
时间: 2023-12-11 18:02:31 浏览: 95
以下是C++代码实现:
```cpp
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int main() {
set<int> set1, set2;
int n, m, x;
cout << "请输入第一组整数个数:";
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x;
set1.insert(x);
}
cout << "请输入第二组整数个数:";
cin >> m;
for (int i = 0; i < m; i++) {
cin >> x;
set2.insert(x);
}
// 输出交集
set<int> inter;
set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), inserter(inter, inter.begin()));
cout << "同属于两组的整数为:";
for (auto it = inter.begin(); it != inter.end(); it++) {
cout << *it << " ";
}
cout << endl;
// 输出并集
set<int> uni;
set_union(set1.begin(), set1.end(), set2.begin(), set2.end(), inserter(uni, uni.begin()));
cout << "属于至少一组的整数为:";
for (auto it = uni.begin(); it != uni.end(); it++) {
cout << *it << " ";
}
cout << endl;
// 输出差集
set<int> diff;
set_difference(set1.begin(), set1.end(), set2.begin(), set2.end(), inserter(diff, diff.begin()));
cout << "属于第一组但不属于第二组的整数为:";
for (auto it = diff.begin(); it != diff.end(); it++) {
cout << *it << " ";
}
cout << endl;
return 0;
}
```
运行结果:
```
请输入第一组整数个数:5
1 2 3 4 5
请输入第二组整数个数:4
2 4 6 8
同属于两组的整数为:2 4
属于至少一组的整数为:1 2 3 4 5 6 8
属于第一组但不属于第二组的整数为:1 3 5
```
阅读全文