c++求两个表的并集和交集
时间: 2023-12-24 22:17:43 浏览: 53
假设有两个表A和B,每个表中的元素都是不重复的。
首先,我们需要定义一个函数来计算两个表的交集:
```c++
#include <set>
using namespace std;
set<int> intersection(const set<int>& s1, const set<int>& s2) {
set<int> res;
for (auto it = s1.begin(); it != s1.end(); ++it) {
if (s2.find(*it) != s2.end()) {
res.insert(*it);
}
}
return res;
}
```
然后,我们可以定义一个函数来计算两个表的并集:
```c++
set<int> unionSet(const set<int>& s1, const set<int>& s2) {
set<int> res = s1;
res.insert(s2.begin(), s2.end());
return res;
}
```
下面是一个完整的例子:
```c++
#include <iostream>
#include <set>
using namespace std;
set<int> intersection(const set<int>& s1, const set<int>& s2) {
set<int> res;
for (auto it = s1.begin(); it != s1.end(); ++it) {
if (s2.find(*it) != s2.end()) {
res.insert(*it);
}
}
return res;
}
set<int> unionSet(const set<int>& s1, const set<int>& s2) {
set<int> res = s1;
res.insert(s2.begin(), s2.end());
return res;
}
int main() {
set<int> A = {1, 2, 3, 4, 5};
set<int> B = {3, 4, 5, 6, 7};
set<int> C = intersection(A, B);
set<int> D = unionSet(A, B);
cout << "A: ";
for (auto it = A.begin(); it != A.end(); ++it) {
cout << *it << " ";
}
cout << endl;
cout << "B: ";
for (auto it = B.begin(); it != B.end(); ++it) {
cout << *it << " ";
}
cout << endl;
cout << "Intersection: ";
for (auto it = C.begin(); it != C.end(); ++it) {
cout << *it << " ";
}
cout << endl;
cout << "Union: ";
for (auto it = D.begin(); it != D.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
A: 1 2 3 4 5
B: 3 4 5 6 7
Intersection: 3 4 5
Union: 1 2 3 4 5 6 7
```