为什么我们应该在 <algorithm> 标头的函数之前使用 std 命名空间,而不应该在 <cmath> 标头的函数之前使用它?

Why should we use std name space before functions of <algorithm> header and should not use it before functions of <cmath> header?

提问人:HSA 提问时间:10/20/2021 最后编辑:HSA 更新时间:10/22/2021 访问量:91

问:

我想知道为什么我们应该在像 max() 这样的标头函数之前使用命名空间,而我们没有义务在像 round() 这样的标头函数之前使用它?std<algorithm><cmath>

示例:max(round()

谢谢

算法 C++11 命名空间 std cmath

评论


答:

2赞 zkoza 10/21/2021 #1

<cmath>本质上是 C 标准库的包装器。math.c

此标头最初在 C 标准库中作为 <math.h>。(来源: https://en.cppreference.com/w/cpp/header/cmath)

C++ 是 C 的超集(几乎),这意味着 C++ 编译器应该编译几乎所有用 C 编写的程序。因此,C 标准库中的函数不属于命名空间,这是 C++ 的概念。其他示例:、。当然,您可以自由地将C++标准库与C标准库函数,常量,宏等混合使用。stdprintffopen

对于 C 和 C++ 之间的不兼容,请参阅例如,C 不是 C++ 的子集?