#include <bits / stdc ++。h>如何在C ++中工作?
我从Codeforces博客上读到,如果我们在C++
程序中包含#include <bits/stdc++.h>
,那么就不需要包含任何其他头文件。 #include <bits/stdc++.h>
是如何工作的,可以使用它而不是包含单独的头文件吗?
它基本上是一个头文件,也包括每个标准库和STL包含文件。 我能看到的唯一目的就是testing和教育。
例如GCC 4.8.0 /bits/stdc++.h源文件 。
使用它将包括许多不必要的东西,并增加编译时间。
编辑:正如尼尔所说,这是一个预编译头的实现。 如果您正确设置了预编译,实际上可以根据您的项目加快编译时间。 ( https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html )
不过,我会build议你花点时间学习每个sl / stl头文件,并将其单独包含进来,而不是使用“superheaders”,除了预编译的目的。
#include <bits/stdc++.h>
是预编译头的实现文件。
从软件工程angular度来看,最小化包含是个好主意。 如果你使用它,实际上包含了很多你的程序可能不需要的文件,从而不必要地增加了编译时间和程序大小。
但是在比赛中,使用这个文件是一个好主意,当你想减less做家务时所浪费的时间; 特别是当你的排名是时间敏感的。
它适用于大多数在线评委,编程比赛环境,包括ACM-ICPC(次区域,地区和世界总决赛)以及许多在线评委。
它的缺点是它
- 增加编译时间。
- 使用GNU C ++库的内部非标准头文件,所以不能在MSVC,XCode和其他许多编译器中编译
该头文件不是C ++标准的一部分,因此是不可移植的,应该避免。
而且,即使标准中有一些catch-all标题,你也要避免使用它来代替特定的头文件,因为编译器每次都要真正地读入和parsing每个包含的头文件(包括recursion包含的头文件)翻译单位编译。