【问题标题】:errors with multimap (key type is std::string)多重映射错误(键类型为 std::string)
【发布时间】:2012-06-21 20:44:36
【问题描述】:

我在让多地图工作时遇到了问题。我将只显示代码并描述问题:

    #include <string>
    ...

    multimap<std::string, pinDelayElement> arcList
    pinDelayElement pde;
    std:string mystring = "test"
    arcList[mystring] = pde;

但是,当我编译时,最后一行给了我以下错误:

错误 C2676:二进制 '[' : 'std::multimap<_kty>' 未定义此运算符或转换为预定义运算符可接受的类型 和 [ _Kty=std::字符串, _Ty=Psdfwr::pinDelayElement ]

有人知道我可能做错了什么吗?

【问题讨论】:

  • 好的,我之前用 std::string mystring = "test"; arcList[mystring] = pde; 尝试过(然后又试了一次),它给了我同样的错误,所以,改变它并不能解决它
  • @Cameron R:然后相应地更新您的代码和编译器错误。

标签: c++ multimap


【解决方案1】:

这是因为std::multimap 没有operator[]。尝试使用insert 方法。

【讨论】:

  • 啊,有道理。我在使用地图时遇到了类似的事情,这就是为什么这让我感到困惑。我想这是有道理的,仅使用多图的键进行索引并不容易。谢谢!
【解决方案2】:

以下代码是如何正确执行此操作的示例。

  1. 正如其他人指出的那样,std::multimap 没有索引operator[],因为从中提取元素没有意义——每个索引都有多个值。

  2. 您必须insertmultimap&lt;...&gt;::value_type

#include <string>
#include <map>

void test()
{
    typedef std::multimap<std::string, int> Map;
    Map map;
    map.insert(Map::value_type("test", 1));
}

【讨论】:

  • 非常感谢。是的,我在阅读 juanchopanza 的评论后突然想到,按照我尝试的方式按索引提取是没有意义的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 2014-09-27
  • 2014-06-08
  • 2019-01-18
相关资源
最近更新 更多