首页 > 编程语言 >c++万能头文件

c++万能头文件

时间:2024-06-17 20:58:39浏览次数:13  
标签:头文件 万能 C++ c++ include bits

一、问题出现
c/C++使用首先就是要开头头文件的引用,没有写头文件的程序基本都不会成功运行得到想要的结果,因为每个程序基本都避免不了一定的输入与输出,而输入与输出却在头文件#include/#include<stdio.h>中
大量的库函数扑面而来,随之产生了一个很令人头疼的问题,每一种类型的函数的使用都需要有一个头文件作为前提,函数名和用法背半天先不说,还要记头文件,瞬间哭晕在厕所!

二、解决方法,万能头函数
目前这个万能头文件包括了c++中所有的头文件

#include<bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>


三、#include<bits/stdc++.h>原函数
只会增加添加编译过程时间,不会增加运行时间

#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif

// C++

#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif

万能头文件
万能头文件就是一个包含几乎所有的头文件,如:

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath> 
#include <deque>  
#include <vector>  
#include <queue>  
#include <string>
#include <cstring>     
#include <map>   
#include <stack>  
#include <set>   


万能头文件就是:

#include <bits/stdc++.h>

万能头文件 bits/stdc++.h 的用法和优缺点
它是C++中支持的一个几乎万能的头文件,几乎包含所有的可用到的C++库函数。以后写代码就可以直接引用这一个头文件了,不需要在写一大堆vector、string、map、stack……一、使用方法

#include <bits/stdc++.h>

int main()
{
    // write code here
    
    return 0
}


二、头文件的内容

#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>


 
 

#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif


// C++

#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif


三、VS 中如何使用
  新建一个bits文件夹,里面新建一个名叫stdc++.h的头文件,然后把上面的stdc++.h源文件复制进去保存。

  在这个路径下Microsoft Visual Studio2017\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include新建bits文件夹;然后在bits文件夹新建stdc++.h文件。

四、优点与缺点
  说了这么多对于这个头文件的看法,自己也有了更加深刻的认识,那么它真的是程序员梦寐以求的头文件嘛?

  答案是:并不是。它包含大量不需要的库的头文件,更适合在在线 OJ 比赛中使用,不过在国内 OJ 中,POJ、HDU 不支持这个函数,其他国外的 OJ,还有台湾的 OJ 都支持,CF,Topcoder也都支持。然而,在具体的软件工程的开发中,应该减少包含 <bits/stdc++.h>,控制编译时间和代码大小。

  优点:

  1、在竞赛中节约时间

  2、减少了编写所有必要头文件的工作量

  3、对于使用的每个函数,不用记住GNU C++的所有STL

  缺点:

  1、不属于GNU C++库的标准头文件,在部分情况下可能会失败

  2、使用它将包含许多不必要的东西,并增加编译时间

  3、这个头文件不是C++标准的一部分,因此是不可移植的,应该避免

  4、编译器每次编译翻译单元时都必须实际读取和分析每个包含的头文件,应该减少这类头文件的使用

万能头文件其实就一行:
#include<bits/stdc++.h>
1
其实它包括了:
(基本包括了大部分的STL库函数,使用方便快捷)

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>        
#include <vector>        
#include <queue>        
#include <string>
#include <cstring>      
#include <map>            
#include <stack>        
#include <set>            

不是GNU C++库的标准头文件,在部分情况下会编译失败;
包含了很多不必要的东西,会大大增加编译时间。
⚠️ 这里去除了多余的注释,并删除了 cstdalign。
三、编译器找不到 bits/stdc++.h
最简单粗暴的做法就是,首先找到 <iostream> 这个头文件所在的目录,进入该目录,创建名为 bits 的文件夹,再进入该文件夹,创建一个名为 stdc++.h 的文件,把上述源码复制进去即可。

标签:头文件,万能,C++,c++,include,bits
From: https://blog.csdn.net/2301_77743184/article/details/139753985

相关文章

  • C++11智能指针 unique_ptr、shared_ptr、weak_ptr与定制删除器
    目录智能指针场景引入-为什么需要智能指针?内存泄漏什么是内存泄漏内存泄漏的危害内存泄漏分类如何避免内存泄漏智能指针的使用及原理RAII简易例程智能指针的原理智能指针的拷贝问题智能指针的发展历史std::auto_ptr模拟实现auto_ptr例程:这种方案存在的问题:Boost库中的智能指针......
  • UE4 C++ AI实现跳跃(上下平台)
    NavLinkProxyPointLink:点对点,不提供可处理的事件SmartLink:提供可处理的事件,当AI到达Link位置时,可以接受函数通过ReceiveSmartLinkReached事件进行绑定函数操作实现简单的跳跃通过接口,定义函数,在AI基类中进行实现。主要通过两个函数实现UGameplayStatics::SuggestPro......
  • 跟我从零开始学C++(C++代码基础)
    引言小伙伴们是不是都等不及了,来啦来啦它来啦,在经历过前边那么多乱七八糟的但又重要的知识后,终于迎来了有关C++代码的这一步,真是不容易呀,小伙伴们,本章小雨会带着大家去从下载软件到一些简单的基础知识,放轻松~不过本章全程干货一点都不能错过呀,而且附带的Visualstudio的详......
  • 跟我从零开始学C++(C++代码基础)3
    引言小伙伴们大家好呀,又到了每日学习的时候了,今天小杨同学给大家带来了新的知识点哟,大家准备好了么,昨天学习的任务有没有消化好呢,昨天的课后练习怎么样了呢,有没有费了一番功夫弄出来呢。没有把基础打好的小伙伴们千万不要着急呀,毕竟根基不牢是要出大事情的,小伙伴们加油呀,跟......
  • C++类虚函数实现多态求长方体和圆柱体的体积
    #include<iostream>usingnamespacestd;#definePI3.14classContainer{ public: Container(doubleh){ height=h;//简单的方法初始化h } virtualdoublegetvolumn()=0;//纯虚函数 protected: doubleheight;};classCube:publicC......
  • 2024华为OD机试真题-出租车计费 、靠谱的车-(C++/Python)-C卷D卷-100分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述:程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。比如:23再多......
  • 2024华为OD机试真题-API集群负载统计-(C++/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述某个产品的RESTfulAPI集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTfulAPI是......
  • 基于springboot的南门桥社区疫情防疫系统-48138(免费领源码+数据库)可做计算机毕业设计J
    Springboot南门桥社区疫情防疫系统的设计与实现摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对南门桥社区疫情防疫系统等问题,对南门桥社区......
  • 关于UEC++中FText、FString与FName
    FText用于本地化和用户界面显示文本。可以方便地将游戏文本翻译成不同的语言。FNameFName在UE中的功能与C#中的字符串池有相似之处,但它们的内部实现和用途有些不同。FName是一种轻量级的、不变的标识符类型,主要用于高效地处理字符串的比较和存储。特点:不可变:一旦创建,FNam......
  • C++ Redis 客户端简单使用
    一、准备工作1、Redis语法命令手册:https://c.biancheng.net/redis2/lpush.html2、下载我的RedisDemo示例(包含了redis源码):https://download.csdn.net/download/weixin_45075013/89446384?spm=1001.2014.3001.5503二、Redis客户端连接与使用......