为什么没有标准的 C++ 数学库 <math> 而不是 C 包装器 <cmath>?

Xua*_*uan 0 c++ stl

C++ 标准在保持与 C API 兼容的同时引入了新的 API。C 包装器的标头以“c”开头,例如 <ctime>、<cstring> 和 <climits>。它们对应的 C++ 头文件是 <chrono>、<string> 和 <limits>。

我的问题是为什么 STL 不提供新的数学库,即使旧的 C API 存在许多缺陷。缺陷包括但不限于:C API 使用“f”、“l”和“ll”前缀来声明不同类型的函数,而 C++ 可以重载,缺少 pi 和 e 等常量等。

Jus*_*tin 6

有一个 C 的 C++ 标准库版本<math.h>:它是<cmath>. 该<cfoo>标头是不是仅仅是包装<foo.h>用的名字std命名。它们使用一些 C++ 特性,例如函数重载,并且可以具有更多特性。例如,<cmath>有一堆特殊的数学函数

考虑std::abs。在<cmath>,也有过载intlonglong long,以及floatdoublelong double