在OJ上刷题时发现在Solution里有些人竟然是这么写的:


#include <bits/stdc++.h>  
int main()  
{  
    ...  
}

    于是百度了以下,发现原来<bits/stdc++.h>包含了所有C++的头文件。这样在OJ上刷题的时候就可以直接敲一句#include <bits/stdc++.h>搞定,而不需要敲很多#include。(虽然如此,我还是习惯于把所有头文件都敲出。)

接下来要说的就是<bits/stdc++.h>的内容。网上有很多篇关于这个头文件的文章,但没有一个列出该头文件全部的内容。这里就把Dev-C++ 5.11下的<bits/stdc++.h>的全部内容列出:


// C++ includes used for precompiling -*- C++ -*-  
      
    // Copyright (C) 2003-2014 Free Software Foundation, Inc.  
    //  
    // This file is part of the GNU ISO C++ Library.  This library is free  
    // software; you can redistribute it and/or modify it under the  
    // terms of the GNU General Public License as published by the  
    // Free Software Foundation; either version 3, or (at your option)  
    // any later version.  
      
    // This library is distributed in the hope that it will be useful,  
    // but WITHOUT ANY WARRANTY; without even the implied warranty of  
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
    // GNU General Public License for more details.  
      
    // Under Section 7 of GPL version 3, you are granted additional  
    // permissions described in the GCC Runtime Library Exception, version  
    // 3.1, as published by the Free Software Foundation.  
      
    // You should have received a copy of the GNU General Public License and  
    // a copy of the GCC Runtime Library Exception along with this program;  
    // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see  
    // <http://www.gnu.org/licenses/>.  
      
    /** @file stdc++.h 
     *  This is an implementation file for a precompiled header. 
     */  
      
    // 17.4.1.2 Headers  
      
    // C  
    #ifndef _GLIBCXX_NO_ASSERT  
    #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>  
      
    #if __cplusplus >= 201103L  
    #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>  
      
    #if __cplusplus >= 201103L  
    #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