2

Boostをインストールせずにunordered_setを使いたい。追加しようとしまし--std=gnu++0xたが、認識されたオプションではありません。v4.1.2 には unordered_set が含まれていますか? もしそうなら、どうすればヘッダーファイルを取得できますか?

これは Centos 4 マシンです。

4

2 に答える 2

3

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

一般的に含める方法は#include <tr1/unordered_set>. 次に、それを使用するには、using std::tr1::unordered_set;毎回名前を修飾するか修飾する必要があります。

使用する C++ 標準バージョンは、それが言語標準であり、標準ライブラリ コンストラクトの可用性は半独立であるため、あまり効果がありません。

于 2012-01-28T16:50:22.530 に答える
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 と言って std コンテナーを使用する可能性はありますか?

于 2012-01-29T00:05:59.383 に答える