更好的 if 条件算法
Better algorithm for if condition
我有一个代码,其中包含
bool fn()
{
...
//all the following are boolean functions.
return isTrue()
&&isMsgReceived()
&&isMsgSent();
}
问题在于每个返回布尔函数本身都相当冗长,并且需要大量计算。实际上,如果前一个函数已经失败(and
条件),则检查后续函数是没有意义的。
您是否会建议更简单的方法来返回false
,以防其中一个开始函数已经失败并且不进行进一步检查。目的是减少计算时间。
&&
已经为你做到了。如果isTrue()
返回false
,接下来的两个函数甚至不会被计算。
因此,将最便宜的函数放在&&
链中的第一位是有意义的。
你的代码已经这样做了。
该标准明确指出:
5.14 逻辑 AND 运算符 [expr.log.and]
&&运算符从左到右分组。操作数都根据上下文转换为 bool(第 4 条)。如果两个操作数都为真,否则为假,则结果
true
。与&
不同,&&
保证从左到右的求值:如果第一个操作数false
,则不计算第二个操作数。
然后如果isTrue()
被计算为false
,下一个函数将不会被计算。
然后,您应该首先放置最便宜的函数。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 在没有太多条件句的情况下,我如何避免被零除
- 基于多个条件处理地图中的所有元素
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 给定字符的排列算法,具有条件C++的重复
- lower_bound() 算法/STL 使用前提条件
- 一个有效的图算法,满足以下条件
- 如何在没有 c++ 中的数组/算法的情况下对两个条件的字符串进行排序
- Dijkstra算法条件不正确
- 将条件递归算法转换为迭代算法
- 非标准条件排序算法STL c++
- 合并排序算法 在一个条件下合并第三个数组中的两个数组
- 为什么算法在第一个条件之后结束
- C++算法在条件为真时推进迭代器
- 虽然弗洛伊德的周期查找算法中使用的条件
- 更好的 if 条件算法
- 我如何优化算法和条件在这个for循环
- c++尝试添加Peterson算法以避免共享内存中的竞争条件