一个整数数组类 Array,数组大小在定义时初始化。假设这个类现在已经给出,请你继承这个类,用以实现一个集合类,功能要求如下:1.加入一个元素到集合中。2.判断一个元素是否在集合中。3.取两个集合的交集,用重载”+”运算符实现 #include<iostream.h> #include <assert.h> class Array { int *p; int size; public: Array(int a) { size = a; if(a>0) p = new int[a]; } virtual~Array(){delete []p;p = NULL;} int &operator[](int x) { assert(x>=0); if(size > 0)return p[x]; } };
时间: 2024-01-08 11:01:59 浏览: 63
可以通过继承 Array 类,实现一个集合类 Set,具体实现如下:
```c++
#include<iostream>
#include<assert.h>
class Set : public Array {
public:
Set(int a) : Array(a) {}
bool contains(int x) { // 判断元素是否在集合中
for (int i = 0; i < size; i++) {
if (p[i] == x) {
return true;
}
}
return false;
}
void add(int x) { // 将元素加入集合中
if (!contains(x)) {
for (int i = 0; i < size; i++) {
if (p[i] == 0) {
p[i] = x;
break;
}
}
}
}
Set operator+(Set& s) { // 重载"+"运算符,求两个集合的交集
Set inter(size);
for (int i = 0; i < size; i++) {
if (s.contains(p[i])) {
inter.add(p[i]);
}
}
return inter;
}
};
int main() {
Set s1(5);
s1.add(1);
s1.add(3);
s1.add(5);
Set s2(5);
s2.add(2);
s2.add(4);
s2.add(5);
Set s3 = s1 + s2;
for (int i = 0; i < s3.size; i++) {
std::cout << s3[i] << " ";
}
std::cout << std::endl; // 输出 5
return 0;
}
```
在主函数中,先创建两个集合 s1 和 s2,将元素加入到集合中,然后用重载的 "+" 运算符求两个集合的交集,将结果保存在 s3 中,最后输出 s3 中的元素。
阅读全文