如何一次性包含所有 C++ 标准库?

问题描述 投票:0回答:8

我正在使用向量和链表进行一个班级项目。但在 C++ 中,为了应用它们,我需要在头文件中包含以下代码。

#include<list>
#include<vector>

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

#include<StandardTemplateLibrary>

节省线路。但在我看来,我没有看到任何可以添加到我的代码中的命令。我尝试过 cstdlib、stdlib 和 cstdlib.h,但它们都不包含我需要的关键字。

是否有一个预处理器可以添加到我的项目中来完成这两个任务?或者我只需要包含两者?如果您也可以推荐我参考来源来阅读,我将不胜感激。

c++ templates std
8个回答
20
投票

在某些编译器上,包括

<bits/stdc++.h>
可能会满足您的要求。

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

有关为什么这样做可能不是一个好主意的更多信息:为什么我不应该

#include <bits/stdc++.h>


7
投票

您可以使用:

#include<bits/stdc++.h> 

甚至每个人都建议。但它不是标准头文件。 它的缺点是

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

5
投票

是否有一个单一的预处理器可以添加到我的项目中来完成这两个任务?或者我只需要包含两者?

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

您应该始终为您显式使用的

#include
组件指定
std
语句。


不要被臭名昭著的

#include <bits/stdc++.h>
所欺骗。


4
投票

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


2
投票

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

请参阅有关该主题的维基百科文章


2
投票

庆幸! C++23 将节省您包含所有内容的精力。你可以这样做:

import std; //imports everything in std library
import std.compat; //brings c library to global namespace

尽管你可能需要等待一三年编译器才能支持它。


1
投票

你可以尝试:

#ifndef ALL_H_FILES
#define ALL_H_FILES

#include <iostream>
#include <vector>
#include <list>
//include other libraries

#endif

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


0
投票

您只需添加即可,而不是为不同的功能包含不同的库

#include <bits/stdc++.h>

在 cpp 程序的顶部。

© www.soinside.com 2019 - 2024. All rights reserved.