2012-01-28 27 views
2

我想在不安裝Boost的情況下使用unordered_set。我試圖添加--std=gnu++0x,但它不是一個公認的選項。 v4.1.2是否包含unordered_set?如果是這樣,我怎麼得到它的頭文件?如何在gcc v4.1.2中爲unordered_set獲取頭文件?

這是一臺Centos 4機器。

+0

http://stackoverflow.com/q/1228402/1172428威力給一些提示 – FatalError 2012-01-28 16:55:10

回答

3

unordered_set是在標準C++庫的範圍內,而不是gcc,編譯器(儘管大多數使用gcc構建的程序都鏈接到libstdc++)。

你一般包括它的方式是#include <tr1/unordered_set>。然後,要使用它,您必須執行using std::tr1::unordered_set;或每次限定名稱。

的C++您選擇使用沒有什麼太大的影響,因爲這是語言標準標準版和標準庫結構的可用性是半獨立。

+0

我嘗試了正常的包括不位於由編譯器。這在v4.1.2上適合你嗎? – WilliamKF 2012-01-28 17:07:33

+0

'unordered_set'在'libstdC++',** not **'glibc'的範圍內。而'libstdC++'本身實際上是* GCC的一部分。所以,嗯,它實際上有很多事情要做的編譯器和無關'glibc'。 – Fanael 2012-01-28 17:52:41

+0

@Fanael我真的應該說「標準庫」。我會改變這一點。實際上,你可以建立對備用庫鏈接C++程序,信不信由你。 – Borealid 2012-01-28 17:54:32

0

IIRC,gcc-4.2沒有無序容器,至少沒有名稱空間標準。我知道-std = C++ 0x直到gcc-4.3時纔有效。

你有沒有嘗試過這樣的:在頭

#include <tr1/unordered_set> 
... 
    std::tr1::unordered_set<int> usint; 
... 

通知的TR1 /。

話雖如此,gcc-4.1相當古老。任何機會你可以嘗試說gcc-4.5或4.6並使用std容器?

相關問題