用vector定义一个元素类型为int,元素个数不受限制的集合类set,除了定义一些必要的函数外,还定义具有下列功能的成员函数:

ii22 2014-11-07 09:31:56
[1]bool isEmpty();判断集合是否为空
[2]int size();返回元素个数
[3]bool isElement(int e)const;判断e是否属于集合
[4]bool isSubSet(const Set* s)const;判断e是否包含于集合
[5]bool isEqual(const Set* s)const;判断集合是否相等
[6]Set *insert(int e);将e插入到集合中
[7]Set union(const Set *s)const;求集合的并
[8]Set insertSection(const Set* s)const;求集合的交
[9]Set difference(const Set* s)const;求集合的差
[10]构造函数Set(),拷贝构造函数Set(Set& s),析构函数~Set();



下面是我自己写的一部分代码:
//SetVector.h
#ifndef SETVECTOR_H
#define SETVECTOR_H
#include <cctype>
#include <vector>
using namespace std;

class Set{
public:
Set(); //构造函数
Set(Set& s); //拷贝构造函数
~Set(); //析构函数
void PrintSet(); //打印集合中的元素
bool IsEmpty(); //判断集合是否为空
int size(); //返回集合中元素个数
bool IsElement(int e)const; //判断元素e是否属于集合
bool IsSubSet(const Set& s)const; //判断集合s是否包含于集合
bool IsEqual(const Set& s)const; //判断集合是否相等
Set* insert(int e); //将元素e插入到集合中
Set Union(const Set& s)const; //求集合的并
Set defference(const Set& s)const; //求集合的差
private:
vector<int> Sivec;
};

#endif

//setVec.cpp
#include "SetVector.h"
#include <vector>
#include <cctype>
#include <iostream>
using namespace std;

/* 构造函数初始化工作 */
Set::Set()
{
int num;
cout<<"输入一组整数:"<<endl;
while(cin>>num)
{
Sivec.push_back(num);
}
}

/* 返回集合的大小 */
int Set::size()
{
return Sivec.size();
}

/* 拷贝构造函数 */
Set::Set(Set &s)
{
for(vector<int>::iterator it=Sivec.begin();it != Sivec.end(); ++it)
{
for(int i=0;i != s.size(); ++i)
{
Sivec[*it] = s.Sivec[i];
}
}
}

/* 释放内存空间 */
Set::~Set()
{
for(vector<int>::iterator it=Sivec.begin(); it != Sivec.end(); ++it)
{
Sivec.erase(it);
}
}
/* 将集合中的元素输出到屏幕上,元素间以空格隔开 */
void Set::PrintSet()
{
for(vector<int>::iterator it=Sivec.begin();it != Sivec.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
}

/* 集合为空返回true,否则返回false */
bool Set::IsEmpty()
{
if(Sivec.size())
{
cout<<"集合非空!"<<endl;
return false;
}
else
{
cout<<"集合为空!"<<endl;
return true;
}
}

/* 若元素e为集合中的元素则返回true,否则返回false */
bool Set::IsElement(int e)const
{
for(decltype(Sivec.size()) i=0;i != Sivec.size();++i)
{
if(e == Sivec[i])
{
cout<<"元素"<<e<<"是Set集合中的元素"<<endl;
return true;
}
else
{
cout<<"元素"<<e<<"不是Set集合中的元素"<<endl;
return false;
}
}
}


其他集合函数还不会写,麻烦懂的人帮我看看头文件和源文件这么写合不合适,如果不适合的话,帮我改进一下,谢谢了,给分不是很多(我自己的分数也不是很多,以后可能经常问问题,只能给这么多了,见谅),不胜感激
...全文
363 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-11-09
  • 打赏
  • 举报
回复
你知道这里迭代器会失效吗
Set::~Set()
{
for(vector<int>::iterator it=Sivec.begin(); it != Sivec.end(); ++it)
{
Sivec.erase(it);
}
}
ii22 2014-11-09
  • 打赏
  • 举报
回复
引用 1 楼 u013163178 的回复:
你这跟什么都没干一样啊,你的功能,vector都有啊,你就相当于给vector带了个马甲
你的回复等于没回复一样,不会可以不说话,会的不想说也可以不说话,不要说废话
「已注销」 2014-11-07
  • 打赏
  • 举报
回复
你这跟什么都没干一样啊,你的功能,vector都有啊,你就相当于给vector带了个马甲

65,190

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧