社区
C语言
帖子详情
大家来看看这个问题
r11222
2010-08-06 04:18:58
看STL代码的时候,经常出现这一种方法
就是用两个< 代替一个==
也就是
if(a==b)
改成
if( !(a<b) && !(b<a) )
有什么好处
应该是比较高效,不然STL也不会这样写,但高效在哪?
...全文
143
16
打赏
收藏
大家来看看这个问题
看STL代码的时候,经常出现这一种方法 就是用两个< 代替一个== 也就是 if(a==b) 改成 if( !(a<b) && !(b<a) ) 有什么好处 应该是比较高效,不然STL也不会这样写,但高效在哪?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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型的比较问题吧
常看的几个网站:推荐给大家
常看的几个网站:推荐给大家 作为一名开发者要不断保持与时俱进,不断学习。自学能力是一个人很重要的能力,要学会不断自学,下面是几个我比较喜欢的网站,几乎每天会看一看,推荐给你。 1. 开发者头条: https://toutiao.io 内容比较多,大家可以挑着看,里面有很多文章还是不错的。 我的Django独家号 https://toutiao.i...
学了那么久爬虫,快来
看看
这些反爬,你能攻破多少?【对应
看看
自己修炼到了哪个等级~】
学了那么久爬虫,快来
看看
这些反爬,你能攻破多少?【对应
看看
自己修炼到了哪个等级~】
从另一个角度看奋斗史——01.小人之为
《奋斗史》中,谁是小人?估计大家看到这个
问题
,脑海中会毫不犹豫浮现两个人:张文香和武总。这两个被打上小人的标志,估计大家都不会有异议;但如果问另外一个
问题
,段伏枥是不是小人?估计这
问题
答案就不一而同了。 我们首先来
看看
这个
问题
,段伏枥是不是小人?不妨回头
看看
奋斗史的第96章,此时正是曹燕即将离职之际,段伏枥做了什么?他没有照顾到武总的情绪,依照武总的意思来安抚大家的情绪,反而
金额计算用 BigDecimal 就万无一失了?
看看
这五个坑吧~~
看到一篇因为在金额计算中没有使用而导致故障的文章,但是除非在一些非常简单的场景,结算汇金类的业务也不会直接用来计算金额,原因有两点:先看下面这段代码 输出到控制台的结果是: 造成这种差异的原因是0.1这个数字计算机是无法精确表示的,送给的时候就已经丢精度了,而的实现却完全不同 它使用了浮点数相应的字符串来构造对象,因此避免了精度
问题
。所以大家要尽量要使用字符串而不是浮点数去构造对象,如果实在不行,就使用方法吧。 控制台的输出将会是: 究其原因是,中方法的实现会比较两个数字的精度,而方法则只会比较数值的大小。
Vue.js系列之vue-router(下)(5)
说明:我们项目现在用的是:vue2.0 + vue-cli + webpack + vue-router2.0 + vue-resource1.0.3 如果大家在实践的过程中与本文所说的内容有较大区别的话
看看
是不是版本
问题
。 本文是一系列文章,在我对Vue有了更深刻的理解认识之后会对文章及时进行修改或更正。欢迎大家批评指出错误。以下是已完成的文章列表。 1. Vue.js系列之项目搭建(
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章