【问题标题】:How to include all of the C++ Standard Library at once?如何一次包含所有 C++ 标准库?
【发布时间】:2016-04-21 06:50:01
【问题描述】:

我正在使用向量和链表进行课堂项目。但是在 C++ 中,为了应用它们,我需要在我的标题中包含以下代码。

#include<list>
#include<vector>

我知道这两个都是标准模板库的一部分。所以我想做一个

#include<StandardTemplateLibrary>

保存行。但是无论我在哪里看,我都没有看到添加到我的代码中的单个命令,并且我尝试了 cstdlib、stdlib、cstdlib.h,但它们都没有包含我需要的关键字。

是否有一个单一的预处理器可以添加到我的项目中来完成这两项工作?还是我只需要包括两者?如果您也可以将我推荐给源来阅读,那将不胜感激。

【问题讨论】:

  • 为什么“省线”很重要?
  • 我认为include 整个库不是一个好主意,其中大部分你的代码甚至都没有使用。
  • 延伸之前的评论:因为它会显着减慢编译速度(当然取决于你的电脑有多快)。
  • 没有真正的理由@BartFriederichs,如果我只包含整个内容而不是将其包含在内,那么调用我以后可能需要的函数似乎会更容易。但我在任何地方都找不到&lt;bits/stdc++.h&gt;。要么我的研究很烂,要么我来对了地方。

标签: c++ templates c++-standard-library


【解决方案1】:

在某些编译器上,包括 &lt;bits/stdc++.h&gt; 可能会满足您的需求。

但是请注意,它会使您的代码不可移植(它可能不适用于其他编译器,甚至同一编译器的不同版本)。这在某些情况下是可以的。

更多关于为什么这样做可能不是一个好主意的信息:Why should I not #include &lt;bits/stdc++.h&gt;?

【讨论】:

    【解决方案2】:

    你可以使用:

    #include<bits/stdc++.h> 
    

    正如大家所建议的那样。但这不是标准的头文件。 它的缺点是它是

    • 增加编译时间。(因为它包含所有头文件)
    • 使用 GNU C++ 库的内部非标准头文件,因此无法在 MSVC、XCode 和许多其他编译器中编译

    【讨论】:

      【解决方案3】:

      是否有一个单一的预处理器可以添加到我的项目中来完成这两项工作?还是我必须同时包含两者?

      不,没有,这是故意的。标准库实现应该对实现的组件有最少的相互依赖。

      您应该始终为您明确使用的std 组件指定#include 语句。


      不要被臭名昭著的#include &lt;bits/stdc++.h&gt; 欺骗。

      【讨论】:

      • 出于好奇:为什么这是故意的?
      • @BartFriederichs 尽量减少依赖。
      • 如果您不解释为什么它是故意的以及为什么您应该始终为您明确使用的内容指定包含以及为什么 OP 不应该被臭名昭著的包括。你是完全正确的,但如果你不解释原因,很难从这篇文章中学到任何东西。
      • @Chiel #include &lt;bits/stdc++&gt; 的缺点在链接的帖子中有很好的解释。
      【解决方案4】:

      包含大量未使用的标头将大大增加构建时间!只添加需要的文件

      【讨论】:

        【解决方案5】:

        您可以简单地为自己创建一个通常包含的预编译头文件以加快构建速度。它在上个千年很流行。

        See this Wikipedia article on the subject.

        【讨论】:

          【解决方案6】:

          你可以试试:

          #ifndef ALL_H_FILES
          #define ALL_H_FILES
          
          #include <iostream>
          #include <vector>
          #include <list>
          //include other libraries
          
          #endif
          

          在您的主文件中,您可以:#include "ALL_H_FILES.h"

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-06-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-23
            相关资源
            最近更新 更多