如何借助STL提供的算法来求两个集合的并集
时间: 2024-09-12 11:04:04 浏览: 8
在C++中,如果你想要找出两个集合的并集,可以利用STL提供的`std::set_union`或手动创建一个新的`std::set`并将所有元素添加进去。以下是两种常见方法:
1. **使用`std::set_union`**:
```cpp
#include <set>
using namespace std;
std::set<int> setA = {1, 2, 3, 4};
std::set<int> setB = {3, 4, 5, 6};
// 创建一个新的集合,自动计算并集
std::set<int> unionSet;
std::set_union(setA.begin(), setA.end(), setB.begin(), setB.end(), inserter(unionSet, unionSet.begin()));
// unionSet现在包含了setA和setB的所有唯一元素
```
2. **手动创建新集合**:
```cpp
std::set<int> setA = {1, 2, 3, 4};
std::set<int> setB = {3, 4, 5, 6};
// 创建一个新的空集合
std::set<int> combinedSet;
// 将第一个集合的所有元素添加到combinedSet
combinedSet.insert(setA.begin(), setA.end());
// 接着将第二个集合的所有元素添加到combinedSet,但不会替换已存在的元素
for (int i : setB) {
if (combinedSet.find(i) == combinedSet.end()) {
combinedSet.insert(i);
}
}
// combinedSet现在也是setA和setB的并集
```
这两种方法都能得到两个集合的并集,时间复杂度通常是O(n),其中n是两个集合中元素的总数。