2016-04-21 113 views
0

我正在使用向量和鏈接列表的類項目。但在C++中,爲了應用它們,我需要在頭文件中包含以下代碼。如何一次包含所有的C++標準庫?

#include<list> 
#include<vector> 

我知道這些都是標準模板庫的一部分。所以我想做一個單獨的

#include<StandardTemplateLibrary> 

保存行。但到處都是我看不到一個單獨的命令添加到我的代碼,我試過cstdlib,stdlib,cstdlib.h,並沒有包含我需要的關鍵字。

是否有一個單獨的預處理器,我可以添加到我的項目中來執行這兩個操作?或者我只需要包含兩者?如果你可以引用我的來源閱讀以及將不勝感激。

+4

爲什麼「保存行」很重要? –

+1

我不認爲'包括'整個庫是一個好主意,其中大部分代碼甚至都不使用。 –

+1

擴展以前的評論:因爲它會顯着減慢編譯速度(當然取決於計算機的速度)。 – emlai

回答

4

在一些編譯器上,包括<bits/stdc++.h>可能會做你正在尋找的東西。

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

更多信息可能不是一個好主意:Why should I not #include <bits/stdc++.h>?

4

是否有一個單獨的預處理器,我可以添加到我的項目中來執行這兩個操作?或者我只需要包含兩者?

不,沒有,那是故意的。標準庫實現應該對已實現的組件具有最小的相互依賴關係。

您應該始終爲您明確使用的std組件指定#include語句。


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

+2

出於好奇:爲什麼這是故意的? –

+0

@BartFriederichs最大限度地減少依賴關係 –

+2

如果你沒有解釋爲什麼它是故意的,爲什麼你應該總是指定你明確使用的包含,以及爲什麼OP不應該'不要被臭名昭着的包括欺騙,你是完全正確的,但是如果你不解釋爲什麼,很難從這篇文章中學到任何東西 – Chiel

3

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

1

您可以使用:

#include<bits/stdc++.h> 

,因爲即使被大家建議。 但它不是一個標準的頭文件。 的它的缺點是,它是

  • 增加了編譯時間。(因爲它包括了所有的頭文件一起)
  • 使用GNU C++庫的內部非標準頭文件,所以不會在MSVC,XCode和許多其他編譯器中編譯