【发布时间】:2011-11-21 19:44:20
【问题描述】:
我知道 STL 关联容器(以及我猜想的其他正在排序的容器)使用排序标准来测试相等性。
容器的排序标准默认为 st::less,因此会对容器进行相等性测试:
if (! (lhs < rhs || rhs < lhs))
或类似的东西。我对此有几个问题...
首先,比较相等性似乎是一种非常低效的方法——为什么 STL 会这样做?我本来希望 STL 容器只采用一个额外的默认参数来表示相等。
我的第二个问题更多的是关于上面 if 语句的评估。在 C++ 中,该语句中有多少会被评估(lhs > rhs)是真的?在评估失败的一方从而节省一些效率后,它会停止尝试吗?如果是,首先计算表达式的哪一部分?
【问题讨论】:
-
这是等价,不是等价...
-
@K-ballo 有什么区别?