定义并实现一个集合类MyVector,集合类中curSize表明当前集合中有几个元素,集合中最多含maxSize个元素,存放集合元素的数组是动态的。要求提供的方法有: (1)增加一个元素到集合中; (2)从集合中去掉一个元素; (3)判断一个元素是否在集合中;
时间: 2024-03-23 15:36:38 浏览: 47
以下是一个使用动态数组实现的MyVector集合类的例子:
```c++
#include <iostream>
using namespace std;
class MyVector {
private:
int* arr; // 存放集合元素的动态数组
int curSize; // 当前集合中的元素个数
int maxSize; // 集合中最多含maxSize个元素
public:
// 构造函数
MyVector(int maxSize) {
this->maxSize = maxSize;
arr = new int[maxSize];
curSize = 0;
}
// 增加一个元素到集合中
void add(int x) {
if (curSize >= maxSize) {
cout << "Set is full!" << endl;
return;
}
arr[curSize++] = x;
}
// 从集合中去掉一个元素
void remove(int x) {
for (int i = 0; i < curSize; i++) {
if (arr[i] == x) {
for (int j = i; j < curSize - 1; j++) {
arr[j] = arr[j + 1];
}
curSize--;
return;
}
}
cout << "Element not found in set!" << endl;
}
// 判断一个元素是否在集合中
bool contains(int x) {
for (int i = 0; i < curSize; i++) {
if (arr[i] == x) {
return true;
}
}
return false;
}
// 获取集合大小
int size() {
return curSize;
}
// 析构函数
~MyVector() {
delete[] arr;
}
};
int main() {
MyVector mySet(5);
mySet.add(1);
mySet.add(2);
cout << "Set size: " << mySet.size() << endl;
cout << "Set contains 1? " << mySet.contains(1) << endl;
cout << "Set contains 3? " << mySet.contains(3) << endl;
mySet.remove(2);
cout << "Set size: " << mySet.size() << endl;
cout << "Set contains 2? " << mySet.contains(2) << endl;
return 0;
}
```
这个例子中,我们使用了动态数组来存放集合元素。在MyVector类中,我们实现了添加元素、删除元素、判断元素是否存在、获取集合大小等操作。在main函数中,我们测试了这些操作的正确性。需要注意的是,我们在析构函数中释放了动态数组的内存空间,避免了内存泄漏的问题。
阅读全文