用vector定义一个元素类型为int,元素个数不受限制的集合类set,除了定义一些必要的函数外,还定义具有下列功能的成员函数:
[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;
}
}
}
其他集合函数还不会写,麻烦懂的人帮我看看头文件和源文件这么写合不合适,如果不适合的话,帮我改进一下,谢谢了,给分不是很多(我自己的分数也不是很多,以后可能经常问问题,只能给这么多了,见谅),不胜感激
[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;
}
}
}
其他集合函数还不会写,麻烦懂的人帮我看看头文件和源文件这么写合不合适,如果不适合的话,帮我改进一下,谢谢了,给分不是很多(我自己的分数也不是很多,以后可能经常问问题,只能给这么多了,见谅),不胜感激
...全文
相关推荐
vector定义和初始化
<int> myVector2(5, 42); // 定义一个大小为5的整数vector,所有元素初始化为42```### `vector`的初始化除了定义时初始化,我们还可以在创建`vector`的同时初始化其元素
vector中删除元素erase的用法
`erase`方法是`std::vector`的一个成员函数,它允许我们高效地从向量中移除指定的元素。现在,让我们深入探讨`erase`的使用方法及其细节。1.
C++ vector删除符合条件的元素示例分享
在C++编程中,`std::vector` 是一个非常常用且功能强大的动态数组容器,它允许我们方便地添加、删除和访问元素。
java集合类面试题总结
Collection 和 Collections 的区别Collection 是 Java 中的一个接口,定义了集合操作的基本方法,而 Collections 是一个工具类,提供了许多静态方法来操作集合
大家注意vector, list, set, map成员函数erase
当我们调用`erase`成员函数时,会从容器中移除指定元素。对于`vector`和`list`,处理方式有所不同:1.


