2012-01-28 4 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

答えて

3

unordered_setは、標準C++ライブラリではなく、gcc、コンパイラ(gccを使用して構築されたほとんどのプログラムがlibstdc++に対してリンクされているが)の範囲です。

あなたが一般的に含める方法は#include <tr1/unordered_set>です。次に、それを使用するには、using std::tr1::unordered_set;を実行するか、その都度名前を修飾する必要があります。

使用するよう選択したC++標準バージョンは、言語標準であり、標準ライブラリ構造の可用性は半独立ですので、あまり効果がありません。

+0

私はコンパイラによって見つけられない通常のインクルードを試しました。これはv4.1.2で動作しますか? – WilliamKF

+0

'unordered_set'は' libstdC++ '、**ではなく' glibc'です。そして 'libstdC++'自体は実際には* GCCの一部です。ですから、実際はコンパイラとは関係があり、glibcとは関係ありません。 – Fanael

+0

@Fanael私は本当に "標準ライブラリ"と言っていたはずです。私はそれを変更します。そして、あなたは実際に代替ライブラリにリンクされたC++プログラムをビルドして、それを信じるかどうかを考え出すことができます。 – Borealid

0

IIRCでは、gcc-4.2には、少なくとも名前空間stdには順序付けられていないコンテナがありませんでした。私は、-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と言って、標準のコンテナを使ってみてはどうですか?

関連する問題