大家来看看这个问题

r11222 2010-08-06 04:18:58
看STL代码的时候,经常出现这一种方法

就是用两个< 代替一个==

也就是

if(a==b)

改成

if( !(a<b) && !(b<a) )

有什么好处

应该是比较高效,不然STL也不会这样写,但高效在哪?
...全文
137 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
canshui 2010-08-08
  • 打赏
  • 举报
回复
xuexile
ForestDB 2010-08-07
  • 打赏
  • 举报
回复
STL常需要的“概念”(concept)之一就是实现<重载。
Fighting Horse 2010-08-07
  • 打赏
  • 举报
回复
完全不是这么回事,Stl这么实现是为了减少对所对象的类型的限制,这样我们的类就只要定义 < 就行了,不需要定义 == 或者 !=
liutengfeigo 2010-08-06
  • 打赏
  • 举报
回复
学习了
qgqch2008 2010-08-06
  • 打赏
  • 举报
回复
学习了。。
r11222 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhao4zhong1 的回复:]

重载运算符<而不需要重载运算符==
[/Quote]
根据代码推测,好像这个解释比较好,johndii的也有道理!
谢谢!
qazwhl845174869 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 johndii 的回复:]
引用 2 楼 r11222 的回复:
引用 1 楼 lightboat09 的回复:

应该是为了解决float和double型的比较问题吧


具体呢? 小弟菜鸟


【规则4-3-3】不可将浮点变量用“==”或“!=”与任何数字比较。

千万要留意,无论是float 还是double 类型的变量,都有精度限制。所以一定要

避免将浮点变量用“==”或“!=”与数字比较……
[/Quote]
学习了
赵4老师 2010-08-06
  • 打赏
  • 举报
回复
重载运算符<而不需要重载运算符==
johndii 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lightboat09 的回复:]
4楼抄的《高质量C++编程指南》4.3.3很完整啊!
[/Quote]

是啊,大概是十年前的东西了,用过C++的人都记得。
小楫轻舟 2010-08-06
  • 打赏
  • 举报
回复
4楼抄的《高质量C++编程指南》4.3.3很完整啊!
bobo364 2010-08-06
  • 打赏
  • 举报
回复
我觉得即使这样写,也无法解决float和double的比较问题
小楫轻舟 2010-08-06
  • 打赏
  • 举报
回复
浮点型变量都有精度限制,
要避免用==或!= 与数字比较,
应该化成>= 和 <= 形式
johndii 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 r11222 的回复:]
引用 1 楼 lightboat09 的回复:

应该是为了解决float和double型的比较问题吧


具体呢? 小弟菜鸟
[/Quote]

【规则4-3-3】不可将浮点变量用“==”或“!=”与任何数字比较。

千万要留意,无论是float 还是double 类型的变量,都有精度限制。所以一定要

避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。

假设浮点变量的名字为x,应当将

if (x == 0.0) // 隐含错误的比较

转化为

if ((x>=-EPSINON) && (x<=EPSINON))

其中EPSINON 是允许的误差(即精度)。

johndii 2010-08-06
  • 打赏
  • 举报
回复
浮点,要知道计算机是2进制。==比较的值和你打印看到的不是完全一样的。
r11222 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lightboat09 的回复:]

应该是为了解决float和double型的比较问题吧
[/Quote]

具体呢? 小弟菜鸟
小楫轻舟 2010-08-06
  • 打赏
  • 举报
回复
应该是为了解决float和double型的比较问题吧

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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