在关于D的Tech-Talk中的时间0:43:15,讨论了min函数的实现.在一些算法中使用时,关于"稳定性"和"额外改组(如果值相等)"的关注被提出作为所示实现的原因之一.
任何人都可以提供真实/实际用例(或提供更详细的解释),其中min的这个特定实现是"稳定的"(又名更好),而不是其他可能的实现?或者这只是alpha-geeks走得太远的另一个例子?
推荐实施:
template <class LHS, class RHS, class Return>
inline Return min(LHS& lhs, RHS& rhs)
{
return (rhs < lhs) ? rhs : lhs;
}
Run Code Online (Sandbox Code Playgroud)
其他可能的实施:
template <class LHS, class RHS, class Return>
inline Return min(LHS& lhs, RHS& rhs)
{
return (lhs < rhs) ? lhs: rhs;
}
Run Code Online (Sandbox Code Playgroud)
提案N2199提供基于后者的实现,请注意该提案目前尚未成功.
Jer*_*fin 37
在这种情况下,我很确定"稳定"指的是稳定,因为它应用于排序 - 即,当两个元素相等时,它们按照与它们开始时相同的顺序保持排序.要实现这一点,你想要lhs
在它小于或等于时返回rhs
- 但是在C++中你(通常)只想使用它operator<
,而不依赖于operator<=
.