一个整数数组类 Array, 数组大小在定义时初始化 。假设这个类现在已经给出, 请你继 承这个类, 用以实现一个集合类, 功能要求如下: 加入一个元素到集合中 判断一个元素是否在集合中 取两个集合的交集, 用重载”+”运算符实现 #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]; } };
时间: 2023-12-18 16:02:14 浏览: 111
以下是继承 Array 类实现集合类的代码:
```cpp
#include<iostream>
#include<assert.h>
using namespace std;
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;
}
Set operator+(Set& other) {
Set result(size + other.size);
int index = 0;
for (int i = 0; i < size; i++) {
if (other.contains(p[i])) {
result.p[index++] = p[i];
}
}
result.size = index;
return result;
}
};
int main() {
Set set1(5);
set1[0] = 1;
set1[1] = 2;
set1[2] = 3;
set1[3] = 4;
set1[4] = 5;
Set set2(3);
set2[0] = 3;
set2[1] = 4;
set2[2] = 5;
Set set3 = set1 + set2;
for (int i = 0; i < set3.size; i++) {
cout << set3[i] << " ";
}
cout << endl;
return 0;
}
```
其中,contains()函数用于判断元素是否在集合中,operator+()函数用于求两个集合的交集。
阅读全文