0

我有以下映射的多图:

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>”类型的右侧操作数的运算符(或没有可接受的转换)

4

1 回答 1

0

可能像这样(未经测试)

int priority = ... ;
string alertInv = ... ;
string upperAlertInv = ... ;

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

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

于 2013-04-26T12:52:44.537 回答