我有以下映射的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 <_Kty,_Ty> :: multimap(const std :: less <_Kty>& )':无法将参数1从'const std :: pair <_Ty1,_Ty2>'转换为'const std :: less <_Ty>&'
我也尝试过这样插入一行:
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));
这分别导致以下2个编译错误:
错误C2665:'std :: pair <_Ty1,_Ty2> :: pair':3个重载中没有一个可以转换所有参数类型
而且:
错误C2679:二进制'=':没有找到哪个运算符采用'std :: pair <_Ty1,_Ty2>'类型的右手操作数(或者没有可接受的转换)
1 回答
也许这样(未经测试)
使用[]为您创建一个空的多图(假设在42处不存在) .