我使用的是unordered_map
,其中包括:
#include <unordered_map>
程序编译如下:
g++ Test.cc -std=gnu++0x -o test
我使用的是TR1的unordered_map
还是C ++ 0x的{{1}}。还是两者都一样?
答案 0 :(得分:6)
我相信gcc将他们的TR1标题放在<tr1/unordered_map>
中,所以你应该得到C ++ 11版本。但它们非常相似。
答案 1 :(得分:3)
GCC在tr1子目录中有tr1标头。另外还有tr1命名空间。
#include <tr1/unordered_map>
...
std::tr1::unordered_map<...>(...);
所以,除非你专门做了这些事情或做了类似的“使用”,否则你就会得到标准的。
这些实现是分开的,但它们非常相似。只有足够的差异(initializer_list,比较操作)来维护一个包含所有条件和宏的文件。
答案 2 :(得分:0)
这在很大程度上取决于特定的编译器版本。例如,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
等。
简短回答:这取决于。