用c++代码完成交集,并集,补集的实现
时间: 2024-10-01 08:06:52 浏览: 13
在C++中,你可以使用标准库`<set>`或`<unordered_set>`来实现集合操作,如交集、并集和补集。这里是一个简单的示例:
```cpp
#include <iostream>
#include <set>
// 定义交集函数
template<typename T>
std::set<T> intersection(const std::set<T>& setA, const std::set<T>& setB) {
return setA.intersection(setB);
}
// 定义并集函数
template<typename T>
std::set<T> union_(const std::set<T>& setA, const std::set<T>& setB) {
return setA.union_(setB);
}
// 自己实现补集,先求并集再减去原集合
template<typename T>
std::set<T> complement(const std::set<T>& setA, const std::set<T>& universalSet) {
std::set<T> result = union_(setA, universalSet);
result.erase(setA.begin(), setA.end());
return result;
}
int main() {
std::set<int> setA = {1, 2, 3, 4, 5};
std::set<int> setB = {4, 5, 6, 7};
// 示例操作
std::set<int> intersectionResult = intersection(setA, setB);
std::cout << "Intersection: " << intersectionResult << "\n";
std::set<int> unionResult = union_(setA, setB);
std::cout << "Union: " << unionResult << "\n";
// 假设全集为{1, 2, 3, ..., 10}
std::set<int> universalSet = {1, 2, 3, ..., 10};
std::set<int> complementResult = complement(setA, universalSet);
std::cout << "Complement of A in the universal set: " << complementResult << "\n";
return 0;
}
```
注意,这里的并集`union_`使用了C++17引入的运算符模板`std::set::union_`,如果编译环境不支持,需要换成`std::merge`或自定义函数。