我一直遇到让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 ]
有谁知道我可能做错了什么?
答案 0 :(得分:6)
这是因为std::multimap没有operator[]
。尝试使用insert方法。
答案 1 :(得分:4)
以下代码是如何正确执行此操作的示例。
正如其他人所指出的那样,std :: multimap没有索引operator[]
,因为从中提取元素是没有意义的 - 每个索引都有多个值。
您必须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));
}