我正在尝试使用 std::pair 并使用 std::map 将其映射到 std::string。它的工作方式是给定由一个字符和一个字符串组成的对,将其映射到特定的字符串。
到目前为止,此设置工作正常(编译器接受它):
std::map<std::pair<char, std::string>, std::string> mymap;
std::map<std::pair<char, std::string>, std::string>::iterator it;
但是当我尝试这样做时:
mymap['a', "Q1"] = "Q4";
mymap['b', "Q2"] = "Q3";
mymap['c', "Q3"] = "Q2";
mymap['d', "Q4"] = "Q1";
它作为我不明白的错误返回:
Error 1 error C2679: binary '[' : no operator found which takes a right-hand operand of type 'const char [3]' (or there is no acceptable conversion)
这是在四行代码中每一行的左括号下关联的错误(出现红色波浪线)
有人可以帮助我了解我做错了什么吗?
map 上的 [] 运算符不带两个项目。它只需要一个。在你的情况下,它期待一个 std::pair 对象。所以这样的事情会起作用:
mymap[std::pair<char, std::string>('c', "Q1")] = "Q4";
您可能想要为您的配对类制作一个 typedef:
using myPair = std::pair<char, std::string>;
mymap[myPair('c', "Q1")] = "Q4";
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句