社区
C语言
帖子详情
大家来看看这个问题
r11222
2010-08-06 04:18:58
看STL代码的时候,经常出现这一种方法
就是用两个< 代替一个==
也就是
if(a==b)
改成
if( !(a<b) && !(b<a) )
有什么好处
应该是比较高效,不然STL也不会这样写,但高效在哪?
...全文
166
16
打赏
收藏
大家来看看这个问题
看STL代码的时候,经常出现这一种方法 就是用两个< 代替一个== 也就是 if(a==b) 改成 if( !(a<b) && !(b<a) ) 有什么好处 应该是比较高效,不然STL也不会这样写,但高效在哪?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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型的比较问题吧
P
问题
、NP
问题
、NPC
问题
、NP hard
问题
本文深入探讨了图论的基本概念,包括有向图、无向图及其在算法中的应用。同时,详细解析了P
问题
、NP
问题
、NPC
问题
及NPhard
问题
的区别与联系,阐述了它们在计算复杂度理论中的核心地位。
P
问题
、NP
问题
、NP完全
问题
和NP难
问题
本文深入浅出地介绍了P类与NP类
问题
的基本概念,包括多项式时间算法、时间复杂度等,并通过冒泡排序和旅行家推销
问题
(TSP)等实例,详细阐述了P类、NP类、NPC类及NP难
问题
的区别与联系。
[总结]算法中的P
问题
、NP
问题
、NP完全
问题
和NP难
问题
本文深入探讨了算法复杂度的概念,包括多项式时间算法(P类
问题
)、多项式时间验证(NP类
问题
)及其相关
问题
(NPC、NPH)。通过具体案例如冒泡排序,解释了P类
问题
的定义及意义。进一步阐述了NP类
问题
的特点及NP完全
问题
(NPC)的概念,引入
问题
约化的思想,揭示了NPC
问题
与NP类
问题
之间的联系。最后,简要介绍了NPH
问题
,整体呈现了算法复杂度领域的核心议题。
到底什么是NP
问题
,NP hard
问题
,NP完全
问题
?
本文详细解析了时间复杂度的概念,将其分为常数级、线性、平方及指数级复杂度,并强调了在算法设计中选择多项式级复杂度的重要性。同时,介绍了P
问题
、NP
问题
和NPC
问题
的定义,特别是NP
问题
的特点在于能在多项式时间内验证解的正确性。NP完全
问题
作为NP
问题
的一个子集,是目前尚无多项式时间解法的难题。NP难
问题
则可能比NPC
问题
更难,即使NPC
问题
找到多项式算法,NP难
问题
也可能依然困难。
算法4类
问题
:P
问题
、NP
问题
、NP完全
问题
、NP难
问题
本文介绍了计算机科学中的复杂性理论,包括P类
问题
、NP类
问题
、NP完全
问题
及NP难
问题
等概念。并通过具体实例解释了这些
问题
的区别与联系,以及如何通过
问题
约化的方法证明
问题
的复杂性。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章