从 C++ 来看,有std::min
and std::max
优于fmin
and fmax
?为了比较两个整数,它们提供基本相同的功能吗?
您是否倾向于使用这些函数集中的一组,还是更喜欢编写自己的函数(也许是为了提高效率、可移植性、灵活性等)?
Notes:
-
C++ 标准模板库 (STL) 声明min
and max
标准 C++ 中的函数算法 header.
-
C 标准 (C99) 提供了fmin
and fmax
标准 C 中的函数math.h header.
fmin
and fmax
专门用于浮点数(因此是“f”)。如果将其用于整数,则可能会因转换、函数调用开销等而遭受性能或精度损失,具体取决于您的编译器/平台。
std::min
and std::max
是模板函数(在标头中定义<algorithm>) 适用于任何小于 (<
) 运算符,因此它们可以对允许进行此类比较的任何数据类型进行操作。如果您不想让它发挥作用,您也可以提供自己的比较函数<
.
这更安全,因为当参数具有不同类型时,您必须显式转换参数以进行匹配。例如,编译器不会让您意外地将 64 位 int 转换为 64 位 float。仅凭这个原因就应该使模板成为您的默认选择。 (归功于 Matthieu M 和 bk1e)
即使与浮动模板一起使用may赢在性能上。由于源代码是编译单元的一部分,因此编译器始终可以选择内联调用模板函数。有时是不可能的另一方面,内联对库函数的调用(共享库、缺乏链接时优化等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)