Item 21: Always have comparison functions return false for equal values.
严格弱序( strict weak ordering
)
先补充下严格弱序的概念: 对两个变量 x
和 y
:
x > y
等同于y < x
x == y
等同于!(x < y) && !(x > y)
要想严格弱序,就需要遵循如下规则:
- 每个变量值必须等于其本身(
irreflexivity
):x < x
永远不能为true
- 不对称性(
asymmetry
):如果x < y
,那么y < x
就不能为true
- 有序性必须可传递性:如果
x < y
并且y < z
,那么x < z
- 值相同必须具有可传递性:如果
x == y
并且y == z
,那么x == z