请将include<unordered_map>头文件换成下面代码
1 #if(__cplusplus == 201103L) 2 #include <unordered_map> 3 #include <unordered_set> 4 #else 5 #include <tr1/unordered_map> 6 #include <tr1/unordered_set> 7 namespace std 8 { 9 using std::tr1::unordered_map; 10 using std::tr1::unordered_set; 11 } 12 #endif
这个解决方法主要是依靠 __cplusplus
这个宏在不同C++版本中的值不同。 对于(能够使用且)使用了 -std=c++0x
或者 -std=c++11
编译选项的编译过程,__cplusplus
的值是 201103L
,否则则是其他值。
结论
上述方法最低大概只能支持到C++98这个标准了,因为到了C++98才开始有tr1/unordered_map
,所以你的编译器如果连C++98
都不支持的话,那就乖乖用远古时代流传至今的map
吧。