用c++ 求解一般集合的并集问题。
时间: 2024-10-11 10:07:45 浏览: 20
在C++中,求解两个或多个集合(如`std::set`、`std::unordered_set`)的并集通常使用标准库中的`std::set`或`std::unordered_set`容器以及它们的成员操作。这里我们将演示如何使用`std::set`,因为它的元素是有序的,而`std::unordered_set`的并集操作稍微复杂一些。
首先,如果你有两个已排序的集合`setA`和`setB`,你可以直接使用`insert`方法合并它们:
```cpp
#include <iostream>
#include <set>
// 假设 setA 和 setB 是你已经创建好的 std::set 实例
std::set<int> setA = {1, 2, 3, 4};
std::set<int> setB = {3, 4, 5, 6};
// 创建一个新的空集合用于存储结果
std::set<int> unionSet;
// 将 setA 的所有元素添加到 unionSet 中
unionSet.insert(setA.begin(), setA.end());
// 接着将 setB 中除了已经在 unionSet 中的元素之外的其他元素添加进去
for (auto it = setB.begin(); it != setB.end(); ++it) {
if (unionSet.find(*it) == unionSet.end()) {
unionSet.insert(*it);
}
}
// 输出并集
for (const auto& element : unionSet) {
std::cout << element << " ";
}
```
对于`std::unordered_set`,由于元素无序,你需要遍历每个集合并插入没有重复项的元素到新集合中:
```cpp
std::unordered_set<int> unorderedSetA = {1, 2, 3, 4};
std::unordered_set<int> unorderedSetB = {3, 4, 5, 6};
std::unordered_set<int> unionUnorderedSet(unorderedSetA);
unionUnorderedSet.insert(unorderedSetB.begin(), unorderedSetB.end());
```
这将会合并两个`unordered_set`,但不会去重。
阅读全文