什麼都不多說了,直接上代碼= =、
感謝汪二的幫忙,不然一直都有問題>.<考試的時候能把汪二隨身攜帶就好啦
但是呢,還是要自力更生啦
#include <iostream>using namespace std;struct IntSet{int *inset;};class Set{private:int size;int *elements;public:Set(){size = 0;elements = NULL;}void show();bool operator <=(Set &s);bool operator ==(Set &s);bool operator !=(Set &s);Set & operator |(Set &s);Set & operator &(Set &s);Set & operator -(Set &s);void operator +=(int x);void operator -=(int x);~Set(){if (elements!=NULL){ delete []elements;}}};void Set::show(){for (int i = 0;i<size;i++){cout<<elements[i]<<" ";}cout<<endl;}bool Set::operator<=(Set &s){int count = 0;for (int i = 0;i<size;i++){for (int z = 0;z<s.size;z++){if (elements[i]==s.elements[z]){count++;}}}if (count==size){return true;}elsereturn false;}bool Set::operator==(Set &s){int count = 0;for (int i = 0;i<size;i++){for (int z = 0;z<s.size;z++){if (elements[i]==s.elements[z]){count++;}}}if (count==size&&size==s.size){return true;}elsereturn false;}bool Set::operator !=(Set &s){int count = 0;for (int i = 0;i<size;i++){for (int z = 0;z<s.size;z++){if (elements[i]==s.elements[z]){count++;}}}if (count==size&&size==s.size){return false;}elsereturn true;}Set & Set:: operator | (Set &s){Set *set = new Set;set->size = size;set->elements = new int[set->size];for (int r= 0;r<size;r++ ){set->elements[r] = elements[r];}for (int i = 0;i<s.size;i++){int count = 0;for (int j = 0;j<size;j++){if (s.elements[i]!=elements[j]){count++;}}if (count ==size){int *temp = elements;set->size++;set->elements = new int[set->size];for (int i1 = 0;i1<set->size-1;i1++){set->elements[i1]= temp[i1];} set->elements[set->size-1]= s.elements[i] ;}}return *set;}//交集Set & Set:: operator & (Set &s){Set *set = new Set;set->elements = NULL;set->size = 0;for (int i = 0;i<s.size;i++){for (int j = 0;j<size;j++){if (s.elements[i]==elements[j]){int *temp = set->elements;set->size++;set->elements = new int[set->size];for (int i1 = 0;i1<set->size-1;i1++){set->elements[i1]=temp[i1];}set->elements[set->size-1]=elements[j];}}}return *set;}//差集Set & Set:: operator - (Set &s){Set *set = new Set;set->size = 0;set->elements = NULL;for (int i = 0;i<size;i++){int count = 0;for (int j = 0;j<s.size;j++){if (elements[i]!=s.elements[j]){count++;}}if (count==s.size){int *temp = set->elements;set->size++;set->elements = new int[set->size];for (int i1 = 0;i1<set->size-1;i1++){set->elements[i1] = temp[i1];}set->elements[set->size-1] = elements[i];}}return *set;}void Set::operator+=(int x){int flag = 0;for (int i =0;i<size;i++){if (x==elements[i]){flag = 1;}}if (flag==0){int *temp = elements;size++;elements = new int[size];for (int i = 0;i<size-1;i++){elements[i]= temp[i];}elements[size-1]= x;}else{cout<<x<<"已經在該集合中存在,添加失敗。"<<endl;}}void Set::operator-=(int x){int flag = 0;int pos;for (int i =0;i<size;i++){if (x==elements[i]){flag = 1;pos = i;}}if (flag ==0){cout<<"該集合中不存在"<<x<<"這個元素,刪除失敗。"<<endl;}else{int *temp = elements;size--;elements = new int[size];for (int j = 0;j<pos;j++){elements[j]=temp[j];}for (int i= pos;i<size-1;i++){elements[i]=temp[i+1];}}}void main(){Set set1 ;Set set2;Set set3;set1+=1;set1+=2;set1+=3;set2+=7;set2+=2;set1.show();set3=set1|set2;set1.show();}