3

我一直在让 multimap 工作时遇到问题。我将只显示代码并描述问题:

    #include <string>
    ...

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

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

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

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

4

2 回答 2

6

那是因为std::multimap没有operator[]. 尝试使用插入方法。

于 2012-06-21T20:49:36.200 回答
4

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

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

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

#include <string>
#include <map>

void test()
{
    typedef std::multimap<std::string, int> Map;
    Map map;
    map.insert(Map::value_type("test", 1));
}
于 2012-06-21T20:53:15.007 回答