multimap错误(键类型为std :: string)

时间:2012-06-21 20:44:37

标签: c++ multimap

我一直遇到让multimap工作的问题。我只是展示代码并描述问题:

    #include <string>
    ...

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

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

  

错误C2676:二进制'[':'std :: multimap&lt; _Kty,_Ty&gt;'没有定义此运算符或转换为预定义运算符可接受的类型           同           [               _Kty =的std :: string,               _Ty = Psdfwr :: pinDelayElement           ]

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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

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

  2. 您必须insert一个multimap<...>::value_type

  3.  
    #include <string>
    #include <map>
    
    void test()
    {
        typedef std::multimap<std::string, int> Map;
        Map map;
        map.insert(Map::value_type("test", 1));
    }
    
相关问题