vector<int> a,b求交集并将交集存于a
时间: 2024-09-11 07:15:34 浏览: 53
在C++中,`vector<int>`是一个动态数组,可以用来存储整数序列。如果你想要找出两个`vector<int>` `a` 和 `b` 的交集,并将结果存回原向量`a`中,你可以使用`std::set_intersection`算法。不过,`vector`本身不支持直接修改元素,所以你需要先将其转换成集合类型,如`std::set`或`std::unordered_set`,然后再转回来。
这里是一个简单的步骤示例:
```cpp
#include <set>
#include <algorithm>
// 如果vector中已经有重复元素,需要先去重
std::vector<int> unique_a = std::unique(a.begin(), a.end()), a_end(unique_a);
std::vector<int> unique_b = std::unique(b.begin(), b.end()), b_end(unique_b);
std::set<int> set_a(unique_a, a_end), set_b(unique_b, b_end);
std::set_intersection(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), std::back_inserter(a));
// 现在a包含了a和b的交集
```
注意,这个过程会移除`a`中重复的元素,如果你想保留重复元素,就不用进行去重操作。另外,`std::back_inserter`用于将迭代器指向的目标(这里是`a`的末尾)添加到容器中,实现了不改变原容器大小的操作。
阅读全文
相关推荐


















