通过EASTL,我偶然发现了一段奇怪的代码。以下链接显示的文件的行号为1870。
https://github.com/paulhodge/EASTL/blob/master/include/EASTL/algorithm.h
该行的代码是if(!(value < *i))
。评论说:“我们总是用
编写这样的比较有什么好处(也许我忽略了某些情况)?如果不是,为什么EASTL的作者故意以这种特殊方式编写它,甚至会谨慎地对此发表评论?一致性是这里的唯一原因吗?
最佳答案
这意味着您只需要为容器值类型提供<
和==
。这也意味着您减少了这些类型的可变性(因为所有算法都使用!(a<b)
表示a>=b
和!(a==b)
表示a!=b
);否则,您可能会让>=
和!=
返回不一致的结果。