包含C++标准库

6

在一个语句中是否可以包含整个 C++ 标准库,还是必须逐个头文件进行包含?


2
没有 #include <all.h> - Linus Kleen
最好按需包含它们,这样编译和链接所需的时间会更短。 - Ajay
5个回答

5
不,没有包含所有标准头文件的快捷方式。您通常必须单独包含所需的每个头文件。
可以创建一个包含所有标准库头文件的单个头文件,类似于 all.h。但是,您应该考虑是否这样做是明智之举,因为它会显着延长编译时间。
此外,在做出这样的决定之前,请确保您了解C++编译模型。如果您还不知道,请了解一下什么是翻译单元,对象文件,链接器的作用,包含库头文件和链接库之间的区别。

好的,谢谢,这正是我所需要的。我不打算每天都这样做,前几天我参加了一场编程比赛,我和我的搭档都知道该怎么做,但不知道获取我们所需库的方法,也没有相关的参考资料。 - xspyderz
我认为在这种情况下最好的做法是尝试获得库参考资料,不仅仅是为了找到头文件名称。如果竞赛规则不允许使用参考资料,那么这些规则就非常严格了。如果你绝对不能使用参考资料,可以尝试查找标准库头文件所在的目录并列出该目录 - 在大多数情况下应该很明显,因为其中许多只是以主类命名的(例如容器)。 - AndrzejJ
对于大多数剩余的头文件,如果您经常使用它们,比如<functional>,那么您应该已经有了一个相当好的了解。如果您没有使用过,那么您可能无法在没有参考资料的情况下进行处理。作为最后的手段,您当然可以查看和/或使用grep或任何文本搜索工具来搜索标准库头文件所在的目录。 - AndrzejJ

2

在Visual Studio下,您可以将所有这些头文件放在预编译头文件中。由于该文件被所有文件包含,因此所有stl hearders都可以在任何地方使用。如果预编译头文件中的所有包含来自外部库,则预编译应该加速编译时间。


0

GCC有一个名为<bits/stdc++.h>的头文件,但在典型情况下不应该依赖它。

正如OP所指出的那样,这是你可能只想在竞技编程比赛中使用的东西,因为只有运行时间才重要。


0

不,没有一种快捷方式可以包含所有标准头文件。


0
也许你可以将所有的头文件包含在自己的all.h中,然后#include<all.h>,但这并不推荐。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接