#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。
需提供的操作至少应包括:构造函数、析构函数、拷贝构造函数、插入元素、删除元素、清空集合 、集合并、集合交 、集合显示输出。
设计测试用例调试和运行结果