2016-11-08 122 views
3

作爲每CPP Docstd::greater<functional>頭中定義,但使用std::greater我的C++程序與TDM-GCC-64 5.1.0編譯和僅下面運行,包括:C++程序編譯

#include <cmath> 
#include <cstdio> 
#include <vector> 
#include <iostream> 
#include <algorithm> 
#include <unordered_map> 

這可能是因爲<algorithm>自動包含<functional>,但由於這在文檔中沒有提及,所以我想知道是否有辦法在手之前知道這一點?

+6

不,沒有辦法知道這些實現細節,因爲這就是它們的實現細節。如果您希望具有可移植性並符合C++標準,則應始終包含所需函數和類所需的頭文件。 –

+0

我沒想到這是依賴於實現的。我的印象是標題的定義是標準的,他們的導入中任何隱含的層次結構都是標準的。 –

+0

iostream是通常的一種,它本身在許多標題中徘徊。你可以知道實現的細節,只需查看標題即可。風險在於源文件不會在另一個編譯器上編譯。沒有biggie,當然容易修復。 –

回答

0

只是爲了關閉主題,結論是這是依賴於實現的,並且所有必要的頭文件都應該包含在可移植性中。