c++获取两个vector交集
时间: 2025-07-05 08:53:42 浏览: 13
### 如何在 C++ 中获取两个 `vector` 的交集
为了计算两个 `vector` 的交集,在 C++ 中可以利用 `<algorithm>` 头文件中的函数模板来实现这一目标。具体来说,`std::set_intersection` 是一个非常合适的工具[^3]。
以下是完整的解决方案:
#### 方法概述
1. 首先需要对输入的两个 `vector` 进行排序,因为 `std::set_intersection` 要求其操作的对象是有序的。
2. 使用 `std::set_intersection` 函数将两个已排序的 `vector` 合并到第三个 `vector` 中作为结果存储位置。
3. 输出最终的结果向量即可。
#### 实现代码
下面是一个具体的例子,展示如何找到两个整数型 `vector` 的交集:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 提供 set_intersection 和 sort 函数
using namespace std;
int main() {
vector<int> vec1 = {1, 2, 3, 4, 5};
vector<int> vec2 = {3, 4, 5, 6, 7};
// 对两个 vector 排序
sort(vec1.begin(), vec1.end());
sort(vec2.begin(), vec2.end());
// 创建一个用于保存交集的 vector
vector<int> intersection;
// 计算交集并将结果存入 intersection
set_intersection(
vec1.begin(), vec1.end(),
vec2.begin(), vec2.end(),
back_inserter(intersection));
// 打印交集
cout << "Intersection elements: ";
for(auto elem : intersection){
cout << elem << " ";
}
cout << endl;
return 0;
}
```
#### 关键点解释
- **sort**: 在调用 `set_intersection` 前需确保两组数据已经过排序处理。
- **back_inserter**: 它是一种方便的方式动态扩展容器大小的同时填充新元素。
- **set_intersection**: 返回由两个范围内共同拥有的所有元素组成的新范围的第一个结束迭代器。
通过以上方法能够高效地找出任意两个 `vector` 类型变量之间的公共部分即它们的交集。
阅读全文
相关推荐


















