cpp求两个set的交集
时间: 2023-07-08 10:11:49 浏览: 47
可以使用STL中的set_intersection函数来求两个set的交集,具体代码如下:
```cpp
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int main()
{
set<int> set1 = {1, 2, 3, 4, 5};
set<int> set2 = {3, 4, 5, 6, 7};
set<int> intersection;
set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), inserter(intersection, intersection.begin()));
cout << "Intersection: ";
for (auto i : intersection) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
Intersection: 3 4 5
```
其中,set_intersection函数的前四个参数分别为:两个set的起始和终止迭代器,最后一个参数为插入器,用于将交集元素插入到新的set中。
相关问题
C++STLset集合求交集
你可以使用STL中的set容器来求两个集合的交集。set容器自动对元素进行排序,并且不允许重复元素。
首先,你需要定义两个set集合,并插入元素。然后,使用set_intersection算法来求交集,并将结果存储到另一个set集合中。
下面是一个示例代码:
```cpp
#include <iostream>
#include <set>
#include <algorithm>
int main() {
std::set<int> set1 = {1, 2, 3, 4, 5};
std::set<int> set2 = {3, 4, 5, 6, 7};
std::set<int> intersection;
std::set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(),
std::inserter(intersection, intersection.begin()));
std::cout << "Intersection: ";
for (const auto& element : intersection) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
Intersection: 3 4 5
```
这段代码创建了两个set集合set1和set2,然后使用std::set_intersection函数求交集并将结果存储在intersection集合中。最后,遍历intersection集合并输出交集的元素。
希望能帮到你!如果还有其他问题,请随时提问。
取两个vector的交集
可以使用set_intersection函数来实现取两个vector的交集。
示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec1 = {1, 2, 3, 4};
std::vector<int> vec2 = {3, 4, 5, 6};
// 先将vec1和vec2排序
std::sort(vec1.begin(), vec1.end());
std::sort(vec2.begin(), vec2.end());
// 定义一个存储交集的vector
std::vector<int> intersection;
// 使用set_intersection函数获取交集
std::set_intersection(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), std::back_inserter(intersection));
// 输出交集
for (auto x : intersection) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果:
```
3 4
```