2、- 一个 整数数组类 Array,数组大小在定 义时初始化。假设这个类现在已经给出, 请你继承这个类,用以实现一个集合类,功能要求如下: 加入一个元素到集合中 判断一个元素是否在集合中 取两个集合的交集,用重载"+”运 算符实现 #include< kiostream.h> #include <assert.h> class Array { int *p; int size; public: Array(int a) size= a; if(a>0) p = new int[a]; virtual~Array0){delete [p;p = NULL;} int &operator[](int x) assert(x>=0); if(size > O)return p[x];
时间: 2023-12-18 21:03:24 浏览: 62
数据结构(JAVA)求一个含有n个整数元素的数组a0..n-1中的最大元素
首先,我们需要继承 Array 类,实现一个集合类。继承可以使用关键字 `public`,如下所示:
```
class Set : public Array {
// ...
};
```
接着,在集合类中实现以下功能:
1. 加入一个元素到集合中
我们可以添加一个名为 `add` 的函数,用于将元素加入集合中。具体实现如下:
```
void add(int value) {
for (int i = 0; i < size; i++) {
if (p[i] == value) {
return; // 如果元素已经存在,直接返回
}
}
// 如果元素不存在,将其添加到末尾
int *newArray = new int[size + 1];
for (int i = 0; i < size; i++) {
newArray[i] = p[i];
}
newArray[size] = value;
delete[] p;
p = newArray;
size++;
}
```
2. 判断一个元素是否在集合中
我们可以添加一个名为 `contains` 的函数,用于判断元素是否在集合中。具体实现如下:
```
bool contains(int value) {
for (int i = 0; i < size; i++) {
if (p[i] == value) {
return true; // 如果元素存在,返回 true
}
}
return false; // 如果元素不存在,返回 false
}
```
3. 取两个集合的交集,用重载 "+” 运算符实现
我们可以添加一个名为 `operator+` 的函数,用于重载 `+` 运算符。具体实现如下:
```
Set operator+(Set &other) {
Set result(0);
for (int i = 0; i < size; i++) {
if (other.contains(p[i])) {
result.add(p[i]); // 将两个集合中都存在的元素添加到结果集合中
}
}
return result;
}
```
完整代码如下:
阅读全文