关于万能开头

经常看见有其他的机构讨论这个万能开头#include<bits/stdc++.h>在C++比赛中,说不能用,我笑笑不语,但是自己的学生部分是插班生,难免也会想能不能用,毕竟俩个机构说法不一样,我给与你们肯定的回答:“可以用!”

比赛题目中的时间是指什么?

编程题中出现的时间是指代码执行所需的时间,而不包括编译的时间。

什么是编译?

源代码被传递给编译器,它会分析源代码,检查语法错误,生成中间代码,然后将中间代码转换为目标计算机的机器代码。这个机器代码可以被计算机直接执行。通俗点,就是我们编写的代码翻译成计算机能够使用的二进制代码或者中间代码。所以使用万能开头虽然大大增加了编译的时间,但是由于编译以后是已经是二进制的文件了,运行速度影响不大,对运行的时间影响最大的肯定是代码的质量,即编译者(写代码的人)的水平。

那为什么有些机构说在非G++、GCC下使用可能有问题?

这部分我没有验证,但是我们目前CCF举办的比赛中,无论是win系统还是官方指定的Linux NOI2.0,两者都是使用G++、GCC的编译器。

image.png

比赛还应该注意的头文件

除了万能头文件,在OI比赛模式还需要引入文件输入流输出流头文件,既 #include <cstdio>

宣传需要查证

专业知识领域的宣传,我建议是先查阅文档,好比程序员学习新的IT技术,怎么学的呢?看网络视频吗?有些视频可能好几年了,技术早被淘汰了,最直接最佳的方法就是查阅你所需安装软件的版本的相关文档,无论是dev软件,还是NOI官方都明确可以看见GCC的编译器,这说明用万能头文件没任何的问题。

万能头文件那么好,现实中能用吗?

不行,现实中的项目是不能用万能头文件,万能头文件是把目前主流的绝大部分的库、包都弄进去了,一个实际项目本身只需要部分的库,加上GUI(图形界面)可能也就几百MB,但是引入万能头文件,可能1G多甚至更大,实际的开发是需要考虑其他的因素,编译时间、存储空间、多线程、多进程、高并发等等,当然现在的库的完善以及各种框架的丰富,使得项目越来越大,这是另外一个话题了,当然甲方项目的需求也是越来越复杂了,这里也是个原因,总之,现实中的项目,是绝对不能用万能头文件。