qq_40286272 2017-10-06 16:12 采纳率: 0%
浏览 1183

集合类继承的一些函数的实现的相关问题C++

原题
给定集合类的模板抽象类如下:

template

class Set

{

public:

//在集合中插入一个元素 e 

virtual void Insert(const Elem& e) = 0;

//在集合中删除一个值等于e的元素,如果删除成功则返回true,否则返回false

virtual bool Remove(const Elem& e) = 0;

//获取最早加入到集合第一个元素,该元素的值记录在参数e中返回。如果集合为空,则函数返回false,否则返回true。

virtual bool GetFirstElement(Elem& e) = 0;

//获取最晚加入到集合的元素,该元素的值记录在参数e中返回。 如果集合为空,则函数返回false,否则返回true。

virtual bool GetLastElement(Elem& e) = 0;

//获取集合的元素的个数

virtual int GetSize() = 0;

//获取集合所有元素的值记录在参数array中返回。函数返回集合元素的个数

virtual int GetElements(Elem array[ ]) = 0;

//按进入集合的次序,依次打印输出集合中的元素

virtual void Print() = 0;

//将集合s中的元素合并到当前集合中

virtual void operator += (Set<Elem> & s) = 0;

};

请实现一个继承上述抽象类的集合类ASet,并利用该集合类完成集合操作。

输入
输入数据有三行,每一行对应一个整数集合的元素,排列的顺序是各个元素进入到集合中的先后顺序。这三个整数集合依次记为集合S1、S2和S3。集合的元素的个数不超过1000个,每个元素的取值范围是1~65536。

输出
输出结果分为5行,第1行输出集合S1中第一个元素和最后一个元素;第2行输出集合S2的元素的个数;第3行按进入集合的先后顺序输出S3中的所有元素;第4行,将集合S2合并到S1后,按进入集合的先后次序打印输出S1中的元素;第5行,将集合S2减去集合S3后,按进入集合的先后次序打印输出S2中的元素。

样例输入
1 3 4 5 6 7 8
2 3 4 10 12
1 3 4 100 101

样例输出
1 8
5
1 3 4 100 101
1 3 4 5 6 7 8 2 10 12
2 10 12
我的问题是:创建集合对象时,向里面输入一些数字,后面输出的时候总是会自己添加一些数字,导致输出的结果不对,还有重载的那个函数实现有问题,所以上来问问。如果大佬愿意的话,把代码也告诉我吧,作业提交在即。

  • 写回答

3条回答 默认 最新

  • threenewbee 2017-10-07 03:00
    关注

    你是用的数组,那么还需要一个变量表示有效数据的长度。

    评论

报告相同问题?

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏