使用运算符[]将字符串放入地图

用户名

map<int,string>name为每个添加一个id我有一种方法可以做到这一点。

void User::add(int id, string name) {
    map<int, string>::iterator it = map.find(id);
    if (it == map.end()) {
        map.insert(pair<int, string>(id, name));
    } else {
        it->second = name;
    }
}

它工作得很好。但是我想学习如何使用运算符[]将字符串添加到映射中。下面是我的代码:

void user::add(int id, string name) {
    &auto findUser = map[id];//check if an user exists
    findUser.push_back(string()); // add a new string object
    findUser.push_back(name); // put string into the map
}

当我运行此代码时,它给了我一个错误:'string'没有可行的转换

用户名
    &auto findUser = map[id];//check if an user exists

首先,我认为&开头是拼写错误,因为在声明的那一边它是没有意义的。

map[id]将查找映射到id的字符串。如果没有这样的字符串,则映射将发明一个字符串,将其填充到映射中,并返回对全新字符串的引用您将始终获得一个字符串引用。

因为将返回一个字符串引用,所以auto findUser将是一个字符串引用。其余的代码试图将字符串推入字符串,您已经看到了结果。这是的危险之一auto我非常喜欢它,它从OP隐藏了实际的数据类型,并使错误消息变得更加不可思议。

您不能[]有效地检查地图中是否存在。当然,您可以测试是否有空字符串,但是现在您的空字符串杂乱了地图。很快,您在地图中就会有许多空字符串。不是一个好的解决方案。

map.find与测试存在性一样好。次佳的选择可能是map.at(id),因为如果找不到ID,它将抛出异常。

从好的方面[]来看,由于返回对映射类型的引用,因此可以像使用数组一样使用它。

name = map[id];
map[id] = name;

都是有效的。您也可以使用指针,但这会带来风险。如果更改了地图,则您的指针可能无效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串转换为运算符

来自分类Dev

Python:将字符串与“或”运算符进行比较

来自分类Dev

将字符串转换为运算符 - swift

来自分类Dev

将字符串转换为算术运算符

来自分类Dev

将条件运算符解析为字符串并用作条件运算符

来自分类Dev

对Python字符串使用“ and”和“ or”运算符

来自分类Dev

在“ if”语句中对字符串使用“或”运算符

来自分类Dev

使用“ in”运算符时,字符串何时是对象?

来自分类Dev

如何使用+运算符连接字符串

来自分类Dev

使用Is运算符比较循环中的字符串

来自分类Dev

在C中使用##运算符连接字符串

来自分类Dev

如何使用运算符转换字符串

来自分类Dev

在“ if”语句中对字符串使用“或”运算符

来自分类Dev

使用字符串作为运算符?

来自分类Dev

使用格式运算符“更新”字符串

来自分类Dev

使用AND和OR运算符评估字符串

来自分类Dev

TypeScript 类型使用 as 运算符转换字符串

来自分类Dev

我可以将逻辑运算符“或”与字符串结合使用吗?

来自分类Dev

在ASP MVC中使用隐式运算符将字符串绑定到参数

来自分类Dev

将逻辑运算符与 excel 字符串一起使用

来自分类Dev

字符串和?:运算符

来自分类Dev

使用字符串运算符构建字符串

来自分类Dev

SQL:我可以将“<”运算符的字符串值转换为 where 子句中的运算符吗?

来自分类Dev

将IN谓词与字符串数组一起使用时,PostgreSQL缺少运算符

来自分类Dev

如何使用`= +`运算符将多个字符串合并为一个?-Java

来自分类Dev

使用Java中的三元运算符将字符串转换为布尔值?

来自分类Dev

Python将字符串转换为逻辑运算符

来自分类Dev

Python-如何将字符串运算符转换回其特殊含义?

来自分类Dev

如何将具有运算符的字符串解析为整数?

Related 相关文章

  1. 1

    将字符串转换为运算符

  2. 2

    Python:将字符串与“或”运算符进行比较

  3. 3

    将字符串转换为运算符 - swift

  4. 4

    将字符串转换为算术运算符

  5. 5

    将条件运算符解析为字符串并用作条件运算符

  6. 6

    对Python字符串使用“ and”和“ or”运算符

  7. 7

    在“ if”语句中对字符串使用“或”运算符

  8. 8

    使用“ in”运算符时,字符串何时是对象?

  9. 9

    如何使用+运算符连接字符串

  10. 10

    使用Is运算符比较循环中的字符串

  11. 11

    在C中使用##运算符连接字符串

  12. 12

    如何使用运算符转换字符串

  13. 13

    在“ if”语句中对字符串使用“或”运算符

  14. 14

    使用字符串作为运算符?

  15. 15

    使用格式运算符“更新”字符串

  16. 16

    使用AND和OR运算符评估字符串

  17. 17

    TypeScript 类型使用 as 运算符转换字符串

  18. 18

    我可以将逻辑运算符“或”与字符串结合使用吗?

  19. 19

    在ASP MVC中使用隐式运算符将字符串绑定到参数

  20. 20

    将逻辑运算符与 excel 字符串一起使用

  21. 21

    字符串和?:运算符

  22. 22

    使用字符串运算符构建字符串

  23. 23

    SQL:我可以将“<”运算符的字符串值转换为 where 子句中的运算符吗?

  24. 24

    将IN谓词与字符串数组一起使用时,PostgreSQL缺少运算符

  25. 25

    如何使用`= +`运算符将多个字符串合并为一个?-Java

  26. 26

    使用Java中的三元运算符将字符串转换为布尔值?

  27. 27

    Python将字符串转换为逻辑运算符

  28. 28

    Python-如何将字符串运算符转换回其特殊含义?

  29. 29

    如何将具有运算符的字符串解析为整数?

热门标签

归档