#include #include using namespace std; class IntegerSet { private: int size; int *p; public: IntegerSet(int n=0) { size = n; p = new int[n]; } void Set(); void Show(); IntegerSet operator+(const IntegerSet&); IntegerSet operator-(const IntegerSet&); ~IntegerSet() { delete []p; } }; void IntegerSet::Set() { for(int i = 0; i < size; i++) cin>>p[i]; sort(p, p+size); int *q = unique(p, p+size); size = q - p; } void IntegerSet::Show() { if(size == 0) cout<<'empty'<<endl; else { for(int i = 0; i < size; i++) cout<<p[i]<<' '; cout<<endl; } } IntegerSet IntegerSet::operator+(const IntegerSet& S) { int m = size + S.size; IntegerSet T(m); int i = 0, j = 0, k = 0; while(i < size && j < S.size) { if(p[i] == S.p[j]) T.p[k++] = p[i++]; else if(p[i] < S.p[j]) T.p[k++] = p[i++]; else T.p[k++] = S.p[j++]; } while(i < size) T.p[k++] = p[i++]; while(j < S.size) T.p[k++] = S.p[j++]; T.size = k; return T; } IntegerSet IntegerSet::operator-(const IntegerSet& S) { IntegerSet T(size); int i = 0, j = 0, k = 0; while(i < size && j < S.size) { if(p[i] == S.p[j]) { T.p[k++] = p[i++]; j++; } else if(p[i] < S.p[j]) i++; else j++; } T.size = k; return T; } int main() { int n, m; cin>>n; IntegerSet A(n); A.Set(); cin>>m; IntegerSet B(m); B.Set(); IntegerSet C = A + B; C.Show(); C = A - B; C.Show(); return 0;

C++ 实现整数集合类并重载运算符

原文地址: https://www.cveoy.top/t/topic/oOUJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录