取两个vector的交集
时间: 2024-03-09 08:20:46 浏览: 7
可以使用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
```
相关问题
c++ vector取交集、并集
回答: 要计算两个vector的交集和并集,可以使用STL中的算法和容器操作。首先,我们需要包含头文件<set>和<algorithm>。然后,我们可以使用set容器来存储vector中的元素,因为set会自动去重。接下来,我们可以使用set_intersection算法来计算两个vector的交集,使用set_union算法来计算两个vector的并集。
下面是一个示例代码,展示了如何计算两个vector的交集和并集:
```cpp
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
int main() {
int a[6] = {1, 2, 3, 4, 5, 6};
int b[4] = {4, 5, 6, 7};
std::vector<int> vectorA(a, a + 6);
std::vector<int> vectorB(b, b + 4);
std::set<int> setA(vectorA.begin(), vectorA.end());
std::set<int> setB(vectorB.begin(), vectorB.end());
std::set<int> intersection;
std::set_intersection(setA.begin(), setA.end(), setB.begin(), setB.end(), std::inserter(intersection, intersection.begin()));
std::set<int> unionSet;
std::set_union(setA.begin(), setA.end(), setB.begin(), setB.end(), std::inserter(unionSet, unionSet.begin()));
std::cout << "Intersection: ";
for (auto it = intersection.begin(); it != intersection.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
std::cout << "Union: ";
for (auto it = unionSet.begin(); it != unionSet.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码首先将两个数组转换为vector,然后使用set容器存储vector中的元素。接下来,使用set_intersection算法计算两个set的交集,并使用set_union算法计算两个set的并集。最后,通过遍历set来输出交集和并集的元素。
希望这个例子能够帮助你理解如何计算vector的交集和并集。
std::vector 求交集
std::vector可以使用std::set_intersection函数来求两个向量的交集。在给定的引用中,有一个例子展示了如何使用std::set_intersection函数来求两个向量的交集。首先,需要将两个向量进行排序,然后创建一个目标向量v,大小足够容纳交集元素。使用std::set_intersection函数将两个向量的交集存储在目标向量v中。最后,通过调整目标向量v的大小,将多余的元素删除。下面是一个示例代码:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> first = {5, 10, 15, 20, 25};
std::vector<int> second = {50, 40, 30, 20, 10};
std::vector<int> v;
std::sort(first.begin(), first.end());
std::sort(second.begin(), second.end());
std::set_intersection(first.begin(), first.end(), second.begin(), second.end(), std::back_inserter(v));
std::cout << "The intersection has " << v.size() << " elements: ";
for (const auto& element : v) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}