C++ unordered_map 导致编译时错误

Shr*_*roy 5 c++ unordered-map

我有以下几点:

#include<iostream>
#include<unordered_map>
#include<tuple>

using namespace std;

class CTest {
    // Properties
    public:
        unordered_map<const string, tuple<int, int> > Layout;
    // Methods
    public:
        CTest ();
        ~CTest ();
};

CTest::CTest () {
    Layout["XYZ"] = make_tuple (0, 1);
}

CTest::~CTest () {
  // Do nothing
}

int main (int argc, char *argv[]) {
    CTest Test;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译这个简单的程序会出现以下错误:

错误 C2678:二进制“==”:未找到采用“const std::string”类型的左侧操作数的运算符(或没有可接受的转换)

我在 Windows 7 中使用 Visual Studio 2010 Professional。

hmj*_*mjd 3

除了更改Layout为:

unordered_map<string, tuple<int, int> > Layout;
Run Code Online (Sandbox Code Playgroud)

正如约翰和本杰明所说,你还需要#include <string>

请注意,我不明白为什么Layout需要更改为,即使这const是多余的。

  • @Shredderroy 不,不是“cstring”,只是“string” (2认同)