C++ 多重映射错误(键类型为std::string)

C++ 多重映射错误(键类型为std::string),c++,multimap,C++,Multimap,我在使用multimap时遇到了一些问题。我将展示代码并描述问题: #include <string> ... multimap<std::string, pinDelayElement> arcList pinDelayElement pde; std:string mystring = "test" arcList[mystring] = pde; #包括 ... 多重映射弧表 单元素偏微分方程; std:strin

我在使用multimap时遇到了一些问题。我将展示代码并描述问题:

    #include <string>
    ...

    multimap<std::string, pinDelayElement> arcList
    pinDelayElement pde;
    std:string mystring = "test"
    arcList[mystring] = pde;
#包括
...
多重映射弧表
单元素偏微分方程;
std:string mystring=“test”
arcList[mystring]=pde;
但是,当我编译时,最后一行给出了以下错误:

错误C2676:二进制“[”:“std::multimap”未定义此运算符或到预定义运算符可接受的类型的转换 具有 [ _Kty=std::string, _Ty=Psdfwr::pinDelayElement ]


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

那是因为没有
操作符[]
。请尝试使用该方法。

下面的代码是如何正确执行的示例

  • 正如其他人指出的,std::multimap没有索引
    操作符[]
    ,因为从中提取元素没有意义——每个索引都有多个值

  • 您必须插入一个
    multimap::value\u type

  • #包括
    #包括
    无效测试()
    {
    typedef std::多重映射;
    地图;
    插入(map::value_type(“test”,1));
    }
    
    ok,我以前用
    std::string mystring=“test”arcList[mystring]尝试过它(只是又尝试了一次)=pde;
    它会给我同样的错误,因此,更改它并不能解决问题it@CameronR:然后相应地更新您的代码和编译器错误。啊,这是有道理的。我在使用map时遇到了类似的问题,这就是为什么这让我感到困惑的原因。我想这是有道理的,因为对于一个多重映射来说,仅使用键进行索引并不是那么容易。谢谢!非常感谢。是的,在读了胡安科潘扎的评论后,我突然意识到,按照索引的方式进行提取是没有意义的
    #include <string>
    #include <map>
    
    void test()
    {
        typedef std::multimap<std::string, int> Map;
        Map map;
        map.insert(Map::value_type("test", 1));
    }