c语言题目,求解!

2025-02-24 12:00:57
推荐回答(1个)
回答1:

这是c++啊...
#include
#include

using namespace std;

class Set {
protected:
int* arr;
int len;

public:
Set(void) {
arr = new int[0];
len = 0;
}
Set(const Set& right) {
len = right.len;
arr = new int[len];
memmove(arr, right.arr, right.len * sizeof(int));
}
~Set(void) {
delete[] arr;
}

inline int& operator[](int i) {
if (i >= len || i < 0) { throw invalid_argument("i"); }
return arr[i];
}
inline const int& operator[](int i) const {
if (i >= len || i < 0) { throw invalid_argument("i"); }
return arr[i];
}
inline int size(void) const {
return len;
}

int find(int a) const {
for (int i = 0; i < len; i++) {
if (arr[i] == a) {
return i;
}
}

return -1;
}

void resize(int newLen, int val) {
if (newLen < 0 || newLen == len) {
return;
}

int* p = new int[newLen];
memmove(p, arr, ((len < newLen) ? len : newLen) * sizeof(int));
delete[] arr;
arr = p;

if (newLen > len) {
do {
arr[len] = val;
} while (++len < newLen);
}
else {
len = newLen;
}
}

void add(int a) {
int index = find(a);
if (-1 == index) {
resize(len + 1, a);
}
}
};

void Show(const Set& a) {
for (int i = 0; i < a.size(); i++) {
cout << a[i] << ", ";
}
cout << endl;
}

int main(int argc, const char* const argv[]) {
Set a;
a.add(5);
Show(a);
a.add(8);
Show(a);
a.add(5);
Show(a);

return 0;
}