簡體   English   中英

使用C ++ 0x的unordered_map

[英]Using unordered_map of C++0x

我正在使用一個unordered_map ,它包含在: #include <unordered_map> ,程序編譯如下: g++ Test.cc -std=gnu++0x -o test我使用的是TR1的unordered_map還是C ++的unordered_map 0X。 還是兩者都一樣?

我相信gcc將他們的TR1標題放在<tr1/unordered_map> ,所以你應該得到C ++ 11版本。 但它們非常相似。

GCC在tr1子目錄中有tr1頭。 另外還有tr1命名空間。

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

因此,除非你專門做了這些事情或做了類似的“使用”,否則你會得到標准的。

實現是分開的,但它們非常相似。 只有足夠的差異(initializer_list,比較操作)來維護一個文件,所有條件和宏都很痛苦。

這在很大程度上取決於特定的編譯器版本。 例如,GCC 4.4基本上只有一些宏開關用於-std=c++0x選項以適當地進行命名空間標記,但總是最終從tr1_impl/unordered_map提取實際代碼,而GCC 4.6有兩個完全獨立的實現,一個在tr1/unordered_map.h ,一個在bits/unordered_map.h - 並且.../hashtable.h相應的基類實現確實不同; C ++ 0x版本在任何地方都有std::forward s等。

簡答:這取決於。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM