我正在使用unordered_map
包含为:
#include <unordered_map>
并且程序编译如下:
g++ Test.cc -std=gnu++0x -o test
我使用的unordered_map
是TR1还是C++0x。还是两者都一样?
问问题
3314 次
3 回答
6
我相信 gcc 将他们的 TR1 标头放入 中<tr1/unordered_map>
,因此您应该获得 C++11 版本。但它们非常相似。
于 2011-05-10T00:37:10.440 回答
3
GCC 在 tr1 子目录中有 tr1 头文件。另外还有 tr1 命名空间。
#include <tr1/unordered_map>
...
std::tr1::unordered_map<...>(...);
因此,除非您专门做了这些事情或做了类似的“使用”,否则您已经得到了标准。
实现是分开的,但它们非常相似。有足够的差异(initializer_list,比较操作)使维护一个包含所有条件和宏的文件变得很痛苦。
于 2011-05-11T01:48:31.017 回答
0
这在很大程度上取决于特定的编译器版本。例如,GCC 4.4 基本上只有一些宏开关供您选择适当地进行命名空间标记,-std=c++0x
但最终总是会从tr1_impl/unordered_map
.实际上,各个基类的实现确实不同;C++0x 版本到处都有 s 等等。tr1/unordered_map.h
bits/unordered_map.h
.../hashtable.h
std::forward
简短的回答:这取决于。
于 2011-06-15T06:40:10.880 回答