为了账号安全,请及时绑定邮箱和手机立即绑定

求助在C++ algorithm 中 max_element和min_element 问题?

求助在C++ algorithm 中 max_element和min_element 问题?

喵喔喔 2021-05-23 17:13:33
一个复数(x+iy)集合,两种操作作用在该集合上: 1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE; 2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE; 最开始要读入一个int n,表示接下来的n行每一行都是一条命令。示例输入:3PopInsert 1+i2Pop示例输出:emptySIZE = 11+i2SIZE = 0我想用algorithm中的max_element来找出Pop的复数值,并且使用自定义谓词:bool MAX(Com Ca,Com Cb)//Com是两个复数{if((Ca.R*Ca.R+Ca.I*Ca.I)>(Cb.R*Cb.R+Cb.I*Cb.I))//判断模长return true;else if(Ca.R*Ca.R+Ca.I*Ca.I==Cb.R*Cb.R+Cb.I*Cb.I)//在模长相等的时候,判断虚部{if(Ca.I<Cb.I)return true;}return false;}但是没有accepted,我把max_element改成了min_element,结果对了。问:为什么max_element是错的,而min_element是对的?使用max_element时,没通过的测试用例:输入:88 Insert 407+i235 Insert 242+i490 Pop ……正确输出:SIZE = 1SIZE = 2242+i490SIZE = 1实际:SIZE = 1SIZE = 2407+i235SIZE = 1
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

max_element和min_element比较函数让你判断左边是不是比右边小。你返回左边是不是比右边大,自然只能反过来用了。

查看完整回答
反对 回复 2021-05-31
?
ibeautiful

TA贡献1993条经验 获得超5个赞

可以用max和min

查看完整回答
反对 回复 2021-05-31
  • 2 回答
  • 0 关注
  • 268 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信