#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;class SetClass
{public:vector <int>vec;SetClass(); //构造函数析构函数~SetClass(); //析构函数SetClass(SetClass &p);//拷贝构造函数void Insert();//插入元素void Delete();//删除元素void clear();//清空集合void Bin(SetClass &p);//集合并void Jiao(SetClass &p);//集合交void Show();//集合显示输出
};SetClass::SetClass()//构造函数析构函数
{}SetClass::~SetClass() //析构函数
{cout<<"destory"<<endl;
}SetClass::SetClass(SetClass &p)//复制构造函数
{SetClass::vec=p.vec;cout<<"复制函数被调用"<<endl;
}void SetClass::Insert()//插入元素
{cout<<"输入插入数据:"<<endl;int x;cin>>x;vector<int>::iterator it;it=find(vec.begin(),vec.end(),x);if(it!=vec.end()){cout<<"集合中已有该元素"<<endl;}else{SetClass::vec.push_back(x);}
}void SetClass::Delete()//删除元素
{if(SetClass::vec.size()==0){cout<<"集合为空"<<endl;}else{cout<<"输入删除数据:"<<endl;int y;cin>>y;vector<int>::iterator is;is=find(vec.begin(),vec.end(),y);if(is!=vec.end()){vec.erase(is);cout<<"删除成功"<<endl;}else{cout<<"未找到该删除数据"<<endl;}}
}void SetClass::clear()//清空集合
{SetClass::vec.clear();cout<<"清空成功"<<endl;
}void SetClass::Bin(SetClass &p)//集合并
{vector<int>::iterator ita;vector<int>::iterator itb;vector<int> any;for(ita=SetClass::vec.begin();ita!=SetClass::vec.end();ita++){vector<int>::iterator it;it=find(any.begin(),any.end(),*ita);if(it!=any.end()){continue;}else{any.push_back(*ita);}}for(itb=p.vec.begin();itb!=p.vec.end();itb++){vector<int>::iterator is;is=find(any.begin(),any.end(),*itb);if(is!=any.end()){continue;}else{any.push_back(*itb);}}SetClass::vec=any;cout<<"合并成功"<<endl;
}void SetClass::Jiao(SetClass &p)//集合交
{vector<int>::iterator ita;vector<int>::iterator itb;vector<int> any;for(ita=SetClass::vec.begin();ita!=SetClass::vec.end();ita++){for(itb=p.vec.begin();itb!=p.vec.end();itb++){if(*itb==*ita){any.push_back(*itb);break;}}}SetClass::vec=any;cout<<"交集成功"<<endl;
}void SetClass::Show()//显示集合
{vector<int>::iterator its;if(SetClass::vec.size()==0){cout<<"集合无元素显示"<<endl;}else{cout<<"集合元素有:"<<endl;for(its=SetClass::vec.begin();its!=SetClass::vec.end();its++){cout<<*its<<endl;}cout<<"输出成功"<<endl;}
}int main()
{SetClass x;SetClass a;a.vec.push_back(1);a.vec.push_back(4);a.vec.push_back(2);a.vec.push_back(5);a.vec.push_back(9);SetClass b(a);int choice;do{cout<<"-------------"<<endl;cout<<"1.插入元素"<<endl;cout<<"2.删除元素"<<endl;cout<<"3.清空集合"<<endl;cout<<"4.集合并"<<endl;cout<<"5.集合交"<<endl;cout<<"6.集合显示输出"<<endl;cout<<"0.退出"<<endl;cout<<"-------------"<<endl;cin>>choice;switch(choice){case 1:x.Insert();break;case 2:x.Delete();break;case 3:x.clear();break;case 4:x.Bin(b);break;case 5:x.Jiao(b);break;case 6:x.Show();break;case 0:exit(0);}cout<<"\n"<<endl;}while(choice!=0);
}
定义并实现由整型数元素组成的集合类SetClass。?
需提供的操作至少应包括:构造函数、析构函数、拷贝构造函数、插入元素、删除元素、清空集合?、集合并、集合交?、集合显示输出。
设计测试用例调试和运行结果