首页 文章

如何填充映射的多图?

提问于
浏览
0

我有以下映射的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 回答

  • 0

    也许这样(未经测试)

    int priority = ... ;
    string alertInv = ... ;
    string upperAlertInv = ... ;
    
    modCreAlt[42].insert(make_pair(priority, make_pair(alertInv, upperAlertInv)));
    

    使用[]为您创建一个空的多图(假设在42处不存在) .

相关问题