作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
C++ Templates - The Complete Guide, 2nd Edition介绍max模板:
template<typename T>
T max (T a, T b)
{
// if b < a then yield a else yield b
return b < a ? a : b;
}
它解释了使用 “b < a ? a : b”
而不是 “a < b ? b : a”
:
Note that the max() template according to [StepanovNotes] intentionally returns “b < a ? a : b” instead of “a < b ? b : a” to ensure that the function behaves correctly even if the two values are equivalent but not equal.
如何理解“even if the two values are equivalent but not equal.
”? “a < b ? b : a”
对我来说似乎有相同的结果。
最佳答案
std::max(a, b)
确实被指定为在两者相等时返回 a
。
Stepanov 认为这是一个错误和其他因为它破坏了给出 a
和 b
的有用属性,你总是可以用 {min(a, b), max(a, b )}
;为此,您希望 max(a, b)
在参数相等时返回 b
。
关于c++ - 为什么使用 “b < a ? a : b” 而不是 “a < b ? b : a” 来实现最大模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834117/
我是一名优秀的程序员,十分优秀!