如何一次包含所有C++标准库?

Cal*_*lat 2 c++ templates c++-standard-library

我正在使用矢量和链接列表开发一个类项目.但是在C++中为了应用它们,我需要在头文件中包含以下代码.

#include<list>
#include<vector>
Run Code Online (Sandbox Code Playgroud)

我知道这两者都是标准模板库的一部分.所以我想做一个

#include<StandardTemplateLibrary>
Run Code Online (Sandbox Code Playgroud)

保存线条.但在我看的每个地方,我都没有看到添加到我的代码的单一命令,我尝试过cstdlib,stdlib,cstdlib.h,但它们都没有包含我需要的关键字.

是否有一个单一的预处理器,我可以添加到我的项目中来做这两个?或者我只需要包括两者?如果你能引用我的来源阅读,那将非常感激.

eml*_*lai 8

在一些编译器上,包括<bits/stdc++.h>可能会做你想要的.

但请注意,它会使您的代码不可移植(它可能无法在其他编译器上运行,甚至不能在同一编译器的不同版本上运行).在某些情况下这是可以的.

更多信息为什么这样做可能不是一个好主意:我为什么不这样做#include <bits/stdc++.h>


hit*_*ard 7

您可以使用:

#include<bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)

正如大家所建议的那样。但它不是标准头文件。 它的缺点是它

  • 增加编译时间。(因为它包含所有头文件)
  • 使用 GNU C++ 库的内部非标准头文件,因此无法在MSVCXcode和许多其他编译器中编译


πάν*_*ῥεῖ 5

是否有一个单一的预处理器可以添加到我的项目中来完成这两项工作?还是我只需要包括两者?

不,没有,这是故意的。标准库实现应该对实现的组件具有最少的相互依赖关系。

您应该始终#includestd您显式使用的组件指定语句。


不要被臭名昭著的#include <bits/stdc++.h>.

  • 如果您不解释为什么它是故意的,为什么您应该始终为您明确使用的内容指定包含以及为什么 OP 不应该被臭名昭著的包含所欺骗,那么这对 OP 来说是一个无用的答案。你是完全正确的,但如果你不解释原因,就很难从这篇文章中学到任何东西。 (3认同)
  • 出于好奇:为什么这是故意的? (2认同)