我有以下映射的multimap:
map<int, multimap<int, pair<string, string>>> modCreAlt;
我想在其中插入一行:
int priority = ... ;
string alertInv = ... ;
string upperAlertInv = ... ;
modCreAlt.insert(make_pair(42, make_pair(priority, make_pair(alertInv, upperAlertInv))));
但是我得到以下编译错误:
C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include \ utility(49):
错误C2664:'std :: multimap&lt; _Kty,_Ty&gt; :: multimap(const std :: less&lt; _Kty&gt;&amp;)':
无法从'const std :: pair&lt; _Ty1,_Ty2&gt;'转换参数1到'const std :: less&lt; _Ty&gt; &安培;'
----
我还尝试以这种方式插入一行:
modCreAlt.insert(pair<int, multimap<int, pair<string, string>>>(42, make_pair(priority, make_pair(alertInv, upperAlertInv))));
并且:
modCreAlt[42] = make_pair(priority, make_pair(alertInv, upperAlertInv));
分别导致以下两个编译错误:
错误C2665:'std :: pair&lt; _Ty1,_Ty2&gt; :: pair':3个重载中没有一个可以转换所有参数类型
并且:
错误C2679:binary'=':找不到运算符,该运算符采用'std :: pair&lt; _Ty1,_Ty2&gt;'类型的右手操作数(或者没有可接受的转换)
答案 0 :(得分:0)
喜欢这样(未经测试)
int priority = ... ;
string alertInv = ... ;
string upperAlertInv = ... ;
modCreAlt[42].insert(make_pair(priority, make_pair(alertInv, upperAlertInv)));
使用[]为您创建一个空的多图(假设在42处不存在)。