![](/img/trans.png)
[英]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.