如何使用 std::map 将字符串和字符对映射到字符串?

三维透镜

我正在尝试使用 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)

这是在四行代码中每一行的左括号下关联的错误(出现红色波浪线)

有人可以帮助我了解我做错了什么吗?

用户3001855

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将JSON字符串映射到Kotlin Map

如何将字符串解析为std :: map并验证其格式?

如何通过map [string] interface {}创建字符串映射?

为什么我不能使用 std::map[ ] 添加字符串,但 std::map.at() 有效?

罗马数字基本算法中基于字符串的错误(使用std :: map)

使用 std::map 检查字符串是否包含重复项

休眠如何将Map <enum,enum>中的Enum键和值映射为字符串

如何根据分数将成对映射的字符串转换为多组字符串?

CSVHelper如何将字符串映射到对象

如何将字符串映射到 RGB 值?

Map <String,String>,如何同时打印“键字符串”和“值字符串”

使用字符串Integer映射ArrayList和另一个内部Map

使用AutoMapper将字符串映射到枚举

使用AutoMapper将字符串数组映射到对象

使用开关将函数指针映射到字符串

如何将字符串数组映射到新的字符串数组?

如何将JSON字符串解析为Map?

如何将字符串解析为map

对字符串数组使用 map 函数

对字符串使用map()函数

使用pandas和numpy将字符串类别映射到数字

如何使用std :: fprintf()打印长字符串?

如何获取字符串中的std :: set字符集,作为字符串?

如何将字符串键和浮点值的Json树转换为Map

如何快速使用对象映射器将JSON字符串映射到模型类

TCL字符串映射:如何映射到大括号

如何将 c 样式字符串或字符串文字附加到 std::vector<char*>?

如何将非零索引映射到字符串中的每个字符

我如何在python中使用map和lambda将int应用于每个字符串?