2011-06-11 143 views
4
#include <iostream> 
#include <string> 
#include <unordered_map> 

using namespace std; 

int main() 
{ 
    unordered_map< int, string > m; 

    m[1] = "one"; 
    m[2] = "two"; 
    m[4] = "four"; 
    m[3] = "three"; 
    m[2] = "TWO!"; 
    cout << m[2] << endl; 

    m.clear(); 
    return 0; 
} 

我正在學習,無法弄清楚。編譯器會拋出類型unordered_map未聲明的錯誤。std :: unordered_map使用Visual C++ 2008的未聲明標識符

我正在使用Visual C++ 2008 Express Edition。

回答

12

在Visual Studio 2008中的技術報告1(TR1)類在命名空間的std :: TR1。 加入:

using namespace std::tr1; 

到您的代碼。

+0

謝謝,絕對美好的Coda,它的作品。所以這就是我失蹤+ 1 – munish 2011-06-11 07:06:57

-1

也許你正在尋找stdext::hash_map而不是(包括在<hash_map>)?

VC++ 2008表達我的知識不包括TR1。

+0

它說它可以與快遞版一起使用?我只是試圖安裝它希望是錯的,但它失敗了。由於問題狀態明確表示我認爲TR1必須缺席。 – 2011-06-11 07:16:45

2

您的代碼在VS2010中按照預期工作。輸出兩個!如果這是你沒有得到的。可能你應該切換到VC++ 2010 Express Edition。
大概VC++ 2008不包括TR1

+0

謝謝,+1 ............. – munish 2011-06-11 06:57:45

7

TR1unordered_map是可從<tr1/unordered_map>頭文件作爲std::tr1::unordered_map

在即將推出的C++ 0x標準中,它可從<unordered_map>頭文件中獲得,如std::unordered_map

所以你應該使用<tr1/unordered_map>標題和std::tr1::unordered_map命名空間爲vc 2008,因爲vc 2008不支持C++ 0x。

回答你在評論中引用的問題。
此外,請確保您下載了feature pack for VS2008

查看新功能支持列表。

New containers (tuple, array, unordered set, etc) 
+0

對於適當的建議+1,但仍然存在一個錯誤 - >致命錯誤C1083:無法打開包含文件:'tr1/unordered_map':沒有這樣的文件或目錄 – munish 2011-06-11 07:03:34

+0

再次感謝,我不知道那個.....功能包VS2008! ...... – munish 2011-06-11 07:14:56

1

在C++ 03中,unordered_map定義在std::tr1命名空間(如果它定義的話)。

所以,你應該使用:

std::tr1::unordered_map<int, std::string> m;