如何用C++编写一个函数来实现两个集合(如vector或unordered_set)的并集操作?
时间: 2024-10-25 13:11:08 浏览: 30
在C++中,你可以通过迭代两个集合并添加那些不在另一个集合中的元素来实现两个集合(例如`std::vector`或`std::unordered_set`)的并集操作。这里提供一种基本的示例,使用`std::set`作为例子,因为它的成员不会重复,这非常适合做并集:
```cpp
#include <iostream>
#include <set>
// 函数模板来计算两个集合的并集
template<typename Container>
Container union_sets(const Container& setA, const Container& setB) {
// 使用第一个集合创建一个新的容器,用于存放结果
Container result = setA;
// 遍历第二个集合,将其中未在第一个集合中存在的元素添加到结果中
for (const auto& elem : setB) {
if (result.find(elem) == result.end()) {
result.insert(elem);
}
}
return result;
}
int main() {
std::set<int> setA = {1, 2, 3};
std::set<int> setB = {4, 5, 6};
std::set<int> combinedSet = union_sets(setA, setB);
// 打印并集
for (const int &elem : combinedSet) {
std::cout << elem << " ";
}
std::cout << "\n";
return 0;
}
```
在这个示例中,我们首先创建了一个新的`std::set` `combinedSet` 来保存结果。然后遍历`setB`,如果元素不在`combinedSet`中就添加进去。最后返回这个并集。
阅读全文