【问题标题】:In C++, what is the difference between namespaces and libraries? [closed]在 C++ 中,命名空间和库有什么区别? [关闭]
【发布时间】:2020-04-19 06:19:04
【问题描述】:

我对 C++ 非常陌生,C++ 标准库和 std 命名空间有什么区别。我让他们感到困惑,不知道何时使用哪个。还有头文件和这一切有什么关系?

【问题讨论】:

  • 标准库定义的名称一般放在std命名空间中。我不确定“何时使用哪个”是什么意思 - 每当您希望使用 C++ 标准库的工具时,该工具通常位于 std 命名空间中。
  • @Clu3l3ss 从为初学者阅读一本关于 C++ 的书开始。会有用的。
  • “何时使用哪个”的意思是我不知道每一个是如何工作的,也不知道 std 命名空间和 C++ 标准库的用途是什么。
  • 标准库的目的是为程序员提供有用的工具来构建。 std命名空间的目的是保存标准库定义的名字,所以不会和程序定义的名字冲突。

标签: c++ c++11 c++14


【解决方案1】:

C++ 标准 [模板] 库是一组工具 - 特别是容器和算法 - 在一般意义上很有用。当算法应用于容器时,它尤其强大 - 例如,在对向量进行排序时。

命名空间用于装饰其中定义的符号,从而避免(通常)由不同库定义的符号之间的冲突。所有标准库代码都在命名空间std 中。例如,我们有std::vectorstd::sort 等等。

为了随机选择另一个库,流行的 Nlohmann JSON 库在命名空间 nlohmann 中定义了它的所有符号,并且万一这定义了 vector 类,它不会与标准库发生冲突。

你会经常看到人们在 SO(和其他地方)编码 using namespace std;,有时在头文件中,也许你现在明白为什么这种做法不明智。

这些有帮助吗?

【讨论】:

  • 哦我明白了,所以命名空间 std 只包含 C++ 标准库?另外我们如何检查我们使用的库包含在哪个命名空间中?
  • 是的,命名空间 std 应该包含标准库而不是其他任何东西(即不要将自己的东西放入其中),并确定任何特定的名称空间是/正在使用的库,请查阅文档或源代码。
猜你喜欢
  • 2014-09-18
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
相关资源
最近更新 更多