C+中无序#u映射的错误+;? 我在家里用Visual C++编写了一个程序,但是我尝试在学校Linux电脑上运行,我得到了这些错误。 std::tr1::unordered_map <string, Word*> map; std::tr1::无序地图;
这两个错误都出现在上面的代码行中C+中无序#u映射的错误+;? 我在家里用Visual C++编写了一个程序,但是我尝试在学校Linux电脑上运行,我得到了这些错误。 std::tr1::unordered_map <string, Word*> map; std::tr1::无序地图;,c++,linux,hashmap,unordered-map,C++,Linux,Hashmap,Unordered Map,这两个错误都出现在上面的代码行中 ISO-C++禁止声明“无序”地图,没有类型< /p> 期望“;”在“之前,GCC和MSVC以不同的方式定义了TR1扩展,因为TR1标准对于如何向用户提供它是模糊的。它只是指定应该有一些编译器选项来激活TR1 与MSVC不同,GCC将头放在TR1子目录中。有两种方法可以访问它们: 添加命令行选项-isystem/usr/include/c++//tr1。这更符合要求,但似乎会导致问题 使用条件编译: #ifdef __GNUC__ #include <t
ISO-C++禁止声明“无序”地图,没有类型< /p>
期望“;”在“之前,GCC和MSVC以不同的方式定义了TR1扩展,因为TR1标准对于如何向用户提供它是模糊的。它只是指定应该有一些编译器选项来激活TR1 与MSVC不同,GCC将头放在
TR1
子目录中。有两种方法可以访问它们:
-isystem/usr/include/c++//tr1
。这更符合要求,但似乎会导致问题#ifdef __GNUC__
#include <tr1/unordered_map>
#else
#include <unordered_map>
#endif
\ifdef\uu GNUC__
#包括
#否则
#包括
#恩迪夫
这暴露了GCC的不一致性:TR1不是通过设置选项激活的,而是通过修改代码激活的
有一种有点深奥的方法:计算头名称
#ifdef __GNUC__
#define TR1_HEADER(x) <tr1/x>
#else
#define TR1_HEADER(x) <x>
#endif
#include TR1_HEADER(unordered_map)
\ifdef\uu GNUC__
#定义TR1_标题(x)
#否则
#定义TR1_标题(x)
#恩迪夫
#包括TR1\u标题(无序映射)
这样,您只需“一次”包含内容