读书人

什么是严厉弱排序

发布时间: 2013-09-06 10:17:17 作者: rapoo

什么是严格弱排序?
在CPP primer中,讲到map的时候,提到key必须是一个严格弱排序类型?
[解决办法]
严格弱排序——strict weak ordering
严格是说在判断的时候会用"<",而不是"<=",弱排序是因为,一旦"<"成立便认为存在"<"关系,返回ture,而忽略了"="关系和">"区别,把它们归结为false。

参见http://bbs.csdn.net/topics/90155069
[解决办法]
键值类型上的“小于”关系,当与自身比较时肯定会导致false结果。不能出现相互“小于”的情况,而且如果k1<k2,k2<k3那么k1必然小于k3
[解决办法]

引用:
严格弱排序——strict weak ordering
严格是说在判断的时候会用"<",而不是"<=",弱排序是因为,一旦"<"成立便认为存在"<"关系,返回ture,而忽略了"="关系和">"区别,把它们归结为false。

参见http://bbs.csdn.net/topics/90155069
你的理解是错误的
别随便找个帖子就当对的啊……

严格弱序是对于任意2个值a和b,不允许a<b和b<a同时成立
map之类的在查找值时是用<进行判断的,判断等价用的是!(a<b) && !(b<a)
如果允许a<b和b<a同时成立,就会找不到认为是等价的值
[解决办法]
条款21: 永远让比较函数对相等的值返回false

维基百科Weak ordering
strict weak ordering confusion
Operator< and strict weak ordering

仅供参考

读书人网 >C++

热点推荐