c++设计一个集合类模板,完成集合的并、交、差运算。
时间: 2024-04-29 12:23:48 浏览: 10
以下是一个简单的集合类模板,可以实现集合的并、交、差运算:
```cpp
#include <iostream>
#include <set>
template<typename T>
class Set {
public:
Set() {}
void insert(const T& t) {
data.insert(t);
}
void remove(const T& t) {
data.erase(t);
}
bool contains(const T& t) const {
return data.count(t) > 0;
}
Set<T> operator+(const Set<T>& other) const {
Set<T> result;
for (const T& t : data) {
result.insert(t);
}
for (const T& t : other.data) {
result.insert(t);
}
return result;
}
Set<T> operator-(const Set<T>& other) const {
Set<T> result;
for (const T& t : data) {
if (!other.contains(t)) {
result.insert(t);
}
}
return result;
}
Set<T> operator*(const Set<T>& other) const {
Set<T> result;
for (const T& t : data) {
if (other.contains(t)) {
result.insert(t);
}
}
return result;
}
void print() const {
std::cout << "{";
bool first = true;
for (const T& t : data) {
if (!first) {
std::cout << ", ";
}
std::cout << t;
first = false;
}
std::cout << "}" << std::endl;
}
private:
std::set<T> data;
};
```
使用示例:
```cpp
Set<int> s1;
s1.insert(1);
s1.insert(2);
s1.insert(3);
s1.insert(4);
Set<int> s2;
s2.insert(3);
s2.insert(4);
s2.insert(5);
s2.insert(6);
Set<int> s3 = s1 + s2; // 并集
s3.print(); // 输出 "{1, 2, 3, 4, 5, 6}"
Set<int> s4 = s1 - s2; // 差集
s4.print(); // 输出 "{1, 2}"
Set<int> s5 = s1 * s2; // 交集
s5.print(); // 输出 "{3, 4}"
```