定義元素類型為int、元素個數不受限制的集合類Set, 包括:

來源:互聯網
上載者:User

什麼都不多說了,直接上代碼= =、

感謝汪二的幫忙,不然一直都有問題>.<考試的時候能把汪二隨身攜帶就好啦

但是呢,還是要自力更生啦

#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();}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.