C ++标准引入了新的API,同时保持了与C API的兼容性。 C包装程序的标头以“ c”开头,例如,和。它们对应的C ++标头是,和。
我的问题是,即使旧的C API中存在许多缺陷,为什么STL不提供新的数学库。这些缺陷包括但不限于:C API使用“ f”,“ l”和“ ll”前缀来声明不同类型的函数,而C ++可以重载,缺少诸如pi和e之类的常量,等等。
最佳答案
有C的<math.h>
的C ++标准库版本:它是<cmath>
。 <cfoo>
标头不仅仅是具有<foo.h>
名称空间中名称的std
包装。他们使用一些C ++功能,例如函数重载,并且可以具有更多功能。例如,<cmath>
有一堆special mathematical functions
考虑std::abs
。在<cmath>
中,int
, long
, and long long
和float
, double
, and long double
都有重载。