在C ++中的unordered_map错误?

我正在家用电脑上编写一个使用Visual C ++的程序,但是,我试图在学校的Linux电脑上运行它,并且出现这些错误。

std::tr1::unordered_map <string, Word*> map; 

这两个错误都出现在上面的代码行中

ISO C ++禁止声明不带types的“unordered_map”

预期';' 在'<'令牌之前

最初我使用hash_map,但发现只能在Visual C ++中使用

谢谢

    GCC和MSVC以不同的方式定义TR1扩展,因为TR1标准对于如何提供给用户是模糊的。 它只是指定应该有一些编译器选项来激活TR1。

    与MSVC不同,GCC将标题放在TR1子目录中。 有两种方法可以访问它们:

    1. 添加一个命令行选项-isystem /usr/include/c++/<GCC version>/tr1 。 这是更符合,但似乎导致问题。
    2. 使用条件编译:

       #ifdef __GNUC__ #include <tr1/unordered_map> #else #include <unordered_map> #endif 

      这暴露了GCC的不合格:TR1不是通过设置选项来激活的,而是通过修改代码来激活的。

      有一些有点深奥的方法:计算标题名称。

       #ifdef __GNUC__ #define TR1_HEADER(x) <tr1/x> #else #define TR1_HEADER(x) <x> #endif #include TR1_HEADER(unordered_map) 

      这样,你只需要包括“一次”的东西。