[英]In the C++0x standard there will be unordered_map, how does this compare to boosts 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.