TastefuL847 2022-03-14 19:36 采纳率: 89.4%
浏览 26
已结题

关于c++自定义队列类和运算符重载Orz

想实现的功能是讲两个队列中不重复的部分加起来
这是主函数里的代码
Queue a, b;
a.push(1);
a.push(2);
a.push(3);
b.push(3);
b.push(4);
b.push(5);
Queue c, d;
cout << "a + b = ";
c = a + b;
cout<< c. back();
这是实现文件中的代码
template

Queue Queue::operator+(Queue obj)
{
int ahead = head;
Queue ans;
type temp;
while(!isEmpty())
{
ans.push(front());
pop();
}
head = ahead;
while(!obj.isEmpty())
{
temp = obj.front();
obj.pop();
while(!isEmpty())
{
if(temp == front())
{
break;
}
pop();
}
if(isEmpty())
ans.push(temp);
head = ahead;
}
head = ahead;
cout << ans.back() << endl;
return ans;
}

img


为什么在实现类中调用就没问题,而在主函数中调用,最后一个元素却变成了随机值呢。

  • 写回答

2条回答 默认 最新

  • 关注

    是把a和b中不重复的元素合并到一个容器中吗?感觉逻辑不对啊,Queue自身的数据在第一个while循环中已经全部弹出了,在第二个while循环中本队列中已经没有数据了。代码修改如下:(如果不行的话,建议你把全部代码用代码段贴出来,帮你修改一下,只有这些代码没法调试)

    template <typename type>
    Queue Queue::operator+(Queue obj)
    {
        Queue ans,tt;
        int flag = 0; //是否存在标记
        type temp,data;
        while(!obj.isEmpty())
        {
            temp = obj.front();
            obj.pop();
            //判断temp是否在本队列中
            flag = 0;
            while(!isEmpty())
            {
                data = front();
                pop(); //从本队列中弹出
                if(temp == data)
                {
                    flag = 1;
                    break;
                }
                tt.push(data); //先存到tt中
            }
            if(flag)
                ans.push(temp);
            //把tt中的数据存入本身
            while(!tt.empty())
            {
                push(tt.front());;
                tt.pop();
            }
        }
        return ans;
    }
    
    

    代码段贴代码:点击下面的图标,然后再粘贴代码即可。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 修改了问题 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法