如何同时包含所有C++标准库
How to include all of the C++ Standard Library at once?
我正在使用向量和链表进行一个类项目。但在C++中,为了应用它们,我需要在头中包含以下代码。
#include<list>
#include<vector>
我知道这两个都是标准模板库的一部分。所以我想做一个
#include<StandardTemplateLibrary>
保存行。但无论在哪里,我都看不到要添加到代码中的单个命令,我尝试过cstdlib、stdlib、cstdlib.h,但它们都不包含我需要的关键字。
有没有一个单独的预处理器,我可以添加到我的项目中来完成这两项工作?还是我必须同时包括两者?如果你能给我参考资料,我将不胜感激。
在某些编译器上,包括<bits/stdc++.h>
可能会满足您的要求。
但是,请注意,它使您的代码不可移植(它可能无法在其他编译器上工作,甚至无法在同一编译器的不同版本上工作)。这在某些情况下是可以的。
关于为什么这样做可能不是一个好主意的更多信息:为什么我不应该#include <bits/stdc++.h>
?
您可以使用:
#include<bits/stdc++.h>
正如大家所建议的那样但它不是标准的头文件它的缺点是它是
- 增加了编译时间。(因为它包括所有头文件)
- 使用GNU C++库的内部非标准头文件,因此不会在MSVC、XCode和许多其他编译器中进行编译
有没有一个单独的预处理器,我可以添加到我的项目中来完成这两项工作?还是我必须同时包括两者?
不,没有,这是故意的。标准库实现应该为实现的组件提供最少的相互依赖关系。
您应该始终为显式使用的std
组件指定#include
语句。
不要被臭名昭著的#include <bits/stdc++.h>
欺骗。
包含大量未使用的标头将大大增加构建时间!只添加所需的文件
您只需为自己创建一个预编译的头文件(通常包括)即可加快构建速度。它在上个千年很流行。
请参阅维基百科上关于这个主题的文章。
您可以尝试:
#ifndef ALL_H_FILES
#define ALL_H_FILES
#include <iostream>
#include <vector>
#include <list>
//include other libraries
#endif
在您的主文件上,您可以:#include"ALL_H_FILES.H";
飘柔!C++23将节省您包含所有内容的工作量。您可以执行以下操作:
import std; //imports everything in std library
import std.compat; //brings c library to global namespace
尽管编译器可能需要等待一到三年才能支持它。
您可以简单地添加,而不是为不同的函数包含不同的库
#include <bits/stdc++.h>
在cpp程序的顶部。
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 编译标准库类型
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 铸造标准::有没有回到原来的类型
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 标准库类型的赋值运算符的引用限定符
- 标准是否严格定义了该程序应该如何编译?
- 如何从Windows应用程序输出到标准?
- 安全到标准:移动会员?
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 这是否符合C++标准:双响双响,例如!!(-0.0).
- 标准::变体的赋值运算符
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 如何在 Mac 上使用 c++17 并行标准库算法?
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 并行标准::复制复杂性