使用Visual C++ 2008的std :: unordered_map未声明的标识符

mun*_*ish 4 c++ unordered-map visual-studio-2008

#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;
}
Run Code Online (Sandbox Code Playgroud)

我正在学习,无法弄明白.编译器抛出类型unordered_map未声明的错误.

我使用的是Visual C++ 2008 Express Edition.

MW_*_*dev 12

在Visual Studio 2008中,技术报告1(TR1)中的类位于命名空间std :: tr1中.加:

using namespace std::tr1;
Run Code Online (Sandbox Code Playgroud)

你的代码.


Alo*_*ave 8

TR1 unordered_map中可以从头<tr1/unordered_map>文件中获得std::tr1::unordered_map.

在即将推出的C++ 0x标准中,它可以从头<unordered_map>文件中获得std::unordered_map.

因此,您应该为vc 2008 使用<tr1/unordered_map>标头和std::tr1::unordered_map命名空间,因为vc 2008不支持C++ 0x.

要回答你在评论中引用的问题.
另外,请确保下载VS2008功能包!

检查新功能支持列表.

New containers (tuple, array, unordered set, etc)
Run Code Online (Sandbox Code Playgroud)