請將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吧。
