5

unordered_map次のように含まれる を 使用して#include <unordered_map> います。プログラムは次のようにコンパイルされます g++ Test.cc -std=gnu++0x -o test 。TR1 の を使用していますunordered_mapか、C++0x の を使用していますか。それともどちらも同じですか?

4

3 に答える 3

6

gcc は TR1 ヘッダーを に配置すると思う<tr1/unordered_map>ので、C++11 バージョンを取得する必要があります。しかし、それらは非常に似ています。

于 2011-05-10T00:37:10.440 に答える
3

GCC には、tr1 サブディレクトリに tr1 ヘッダーがあります。さらに、tr1 名前空間があります。

#include <tr1/unordered_map>
...
std::tr1::unordered_map<...>(...);

したがって、これらのことを特に行ったり、同様の「使用」を行ったりしない限り、標準のものを取得しています。

実装は分割されていますが、かなり似ています。すべての条件とマクロを含む 1 つのファイルを保守するのに十分な違い (initializer_list、比較 ops) がありました。

于 2011-05-11T01:48:31.017 に答える
0

これは、特定のコンパイラのバージョンに大きく依存します。たとえば、GCC 4.4 には基本的に-std=c++0x、名前空間のラベル付けを適切に行うためのオプション用のマクロ スイッチがいくつかありましたが、常に から実際のコードを引き出すことになりますが、GCC 4.6 には 1つとtr1_impl/unordered_map1 つの 2 つの完全に別個の実装があります。 do のそれぞれの基本クラスの実装は実際には異なります。C++0x バージョンにはs がどこにでもあります。tr1/unordered_map.hbits/unordered_map.h.../hashtable.hstd::forward

簡単な答え: 場合によります。

于 2011-06-15T06:40:10.880 に答える