【问题标题】:c++ std::map index variablec++ std::map 索引变量
【发布时间】:2011-01-27 14:25:09
【问题描述】:

我有一个像这样的 std::map 设置:

static map<string, string> games;

在 for 循环中,我试图像这样将变量分配给索引值

games[name] = "Yes!";

但这只会给我错误

136: error: no match for operator[] in games[name]

【问题讨论】:

  • name变量的类型是什么?
  • 让我们把这些愚蠢的东西扔掉吧,你已经包含了&lt;map&gt;,并且在某个地方你已经声明了using std::map;,只是为了检查一件事,你还没有声明@987654327 @ 是 for 循环附近的其他类型吗?
  • Doh,你是对的,当它应该是游戏时,我会在循环中使用游戏。使用愚蠢的变量名是我的错,谢谢。

标签: c++ arrays variables map indexing


【解决方案1】:

该错误有两个可能的原因:

  1. games 变量不是std::map 实例。
  2. name 变量不是std::string 实例。

另外,检查是否没有名称冲突。

【讨论】:

    【解决方案2】:

    这是因为 136 不是字符串,而是整数值。您定义的映射只接受字符串键和字符串值。

    http://www.sgi.com/tech/stl/Map.html

    【讨论】:

      【解决方案3】:

      name 不是字符串变量,因此它找不到匹配的 [] 运算符 - 唯一存在的需要字符串参数。

      地图的 [] 运算符需要 [] 中的键值 - 您已将其定义为字符串。

      您可以使用迭代器操作伪造一个整数索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-07
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 2010-10-14
        相关资源
        最近更新 更多