c++ 多个vector 取交集
时间: 2024-08-12 08:01:36 浏览: 105
wenjian.rar_C++数据交集
在 C++ 中,如果你想从两个或更多的 `std::vector` 中获取交集,你可以使用集合容器如 `std::set` 或者 `std::unordered_set`,因为它们提供自动去重并且支持快速查找的功能。以下是利用 `std::set` 实现交集的基本步骤:
1. 首先,将每个 `vector` 转换为 `set`。`set` 的插入操作会自动删除重复元素,所以这一步可以得到无重复的集合。
```cpp
std::set<int> set1(vector1.begin(), vector1.end());
std::set<int> set2(vector2.begin(), vector2.end());
```
2. 然后创建一个新的 `set` 来存储结果,并通过迭代器添加所有 `set1` 和 `set2` 中存在的值。
```cpp
std::set<int> intersection;
intersection.insert(set1.begin(), set1.end());
intersection.insert(set2.begin(), set2.end());
```
3. 如果想保留原始顺序,可以使用 `std::merge` 函数结合两个有序序列,但是这种方式无法保证元素顺序一致,如果需要保持原有顺序,`std::vector<std::pair>` 将是一个选择,但计算复杂度会较高。
```cpp
// 但这通常不推荐,因为可能会导致效率下降
std::vector<int> result(intersection.begin(), intersection.end());
```
阅读全文