写一段求三个集合并集、交集、差集、完整可以运行的c++代码
时间: 2024-10-11 19:06:27 浏览: 33
当然,这里是一个简单的C++程序示例,它包含了如何计算三个集合的并集、交集和差集:
```cpp
#include <iostream>
#include <set>
// 定义集合模板
template<typename T>
std::set<T> set_intersection(const std::set<T>& s1, const std::set<T>& s2) {
return std::set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end());
}
template<typename T>
std::set<T> set_union(const std::set<T>& s1, const std::set<T>& s2) {
std::set<T> result;
result.insert(s1.begin(), s1.end());
result.insert(s2.begin(), s2.end());
return result;
}
template<typename T>
std::set<T> set_difference(const std::set<T>& s1, const std::set<T>& s2) {
std::set<T> result;
for (const auto& elem : s1) {
if (s2.find(elem) == s2.end()) {
result.insert(elem);
}
}
return result;
}
int main() {
// 假设我们有三个集合 A、B 和 C
std::set<int> A = {1, 2, 3, 4};
std::set<int> B = {3, 4, 5, 6};
std::set<int> C = {4, 7, 8};
// 计算并集
std::cout << "Union of A and B: ";
for (auto elem : set_union(A, B)) {
std::cout << elem << " ";
}
std::cout << "\n";
// 计算交集
std::cout << "Intersection of A and B: ";
for (auto elem : set_intersection(A, B)) {
std::cout << elem << " ";
}
std::cout << "\n";
// 计算A相对于B的差集
std::cout << "Difference of A and B: ";
for (auto elem : set_difference(A, B)) {
std::cout << elem << " ";
}
std::cout << "\n";
return 0;
}
```
在这个例子中,`set_intersection`、`set_union`和`set_difference`函数都是模板函数,可以处理任意类型的集合。请注意,这只是一个基础示例,实际使用中可能需要对错误处理和复杂逻辑进行调整。
阅读全文