簡體   English   中英

如何一次包含所有 C++ 標准庫?

[英]How to include all of the C++ Standard Library at once?

我正在使用向量和鏈表進行 class 項目。 但是在 C++ 中,為了應用它們,我需要在我的 header 中有以下代碼。

#include<list>
#include<vector>

我知道這兩個都是標准模板庫的一部分。 所以我想做一個單曲

#include<StandardTemplateLibrary>

保存行。 但是無論我在哪里看,都沒有看到要添加到我的代碼中的單個命令,並且我嘗試了 cstdlib、stdlib、cstdlib.h,但它們都沒有包含我需要的關鍵字。

是否有一個單一的預處理器可以添加到我的項目中來完成這兩項工作? 還是我只需要包括兩者? 如果您也可以將我推薦給源來閱讀,那將不勝感激。

在某些編譯器上,包括<bits/stdc++.h>可能會滿足您的要求。

但是請注意,它使您的代碼不可移植(它可能不適用於其他編譯器,甚至同一編譯器的不同版本)。 這在某些情況下是可以的。

有關為什么這樣做可能不是一個好主意的更多信息:為什么我不應該#include <bits/stdc++.h>

是否有一個單一的預處理器可以添加到我的項目中來完成這兩項工作? 還是我只需要包括兩者?

不,沒有,這是故意的。 標准庫實現應該對實現的組件具有最少的相互依賴關系。

您應該始終為顯式使用的std組件指定#include語句。


不要被臭名昭著的#include <bits/stdc++.h>所欺騙。

您可以使用:

#include<bits/stdc++.h> 

甚至每個人都建議。 但它不是標准的頭文件。 它的缺點是它是

  • 增加編譯時間。(因為它包含了所有的頭文件)
  • 使用 GNU C++ 庫的內部非標准頭文件,因此不會在 MSVC、XCode 和許多其他編譯器中編譯

包含大量未使用的標頭將大大增加構建時間! 只添加需要的文件

您可以簡單地為自己創建一個預編譯的頭文件,通常包含在其中以加快構建速度。 它在上個世紀很受歡迎。

請參閱有關該主題的這篇 Wikipedia 文章

你可以試試:

#ifndef ALL_H_FILES
#define ALL_H_FILES

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

#endif

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

麾。 C++23 將為您節省包含所有內容的工作:您可以這樣做:

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

盡管您可能需要等待一到三年才能讓編譯器支持它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM