unordered_map
次のように含まれる を
使用して#include <unordered_map>
います。プログラムは次のようにコンパイルされます
g++ Test.cc -std=gnu++0x -o test
。TR1 の を使用していますunordered_map
か、C++0x の を使用していますか。それともどちらも同じですか?
3 に答える
gcc は TR1 ヘッダーを に配置すると思う<tr1/unordered_map>
ので、C++11 バージョンを取得する必要があります。しかし、それらは非常に似ています。
GCC には、tr1 サブディレクトリに tr1 ヘッダーがあります。さらに、tr1 名前空間があります。
#include <tr1/unordered_map>
...
std::tr1::unordered_map<...>(...);
したがって、これらのことを特に行ったり、同様の「使用」を行ったりしない限り、標準のものを取得しています。
実装は分割されていますが、かなり似ています。すべての条件とマクロを含む 1 つのファイルを保守するのに十分な違い (initializer_list、比較 ops) がありました。
これは、特定のコンパイラのバージョンに大きく依存します。たとえば、GCC 4.4 には基本的に-std=c++0x
、名前空間のラベル付けを適切に行うためのオプション用のマクロ スイッチがいくつかありましたが、常に から実際のコードを引き出すことになりますが、GCC 4.6 には 1つとtr1_impl/unordered_map
1 つの 2 つの完全に別個の実装があります。 do のそれぞれの基本クラスの実装は実際には異なります。C++0x バージョンにはs がどこにでもあります。tr1/unordered_map.h
bits/unordered_map.h
.../hashtable.h
std::forward
簡単な答え: 場合によります。