繁体   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