【发布时间】:2013-04-26 12:44:32
【问题描述】:
我有以下映射的多图:
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>::multimap(const std::less<_kty> &)' :
无法将参数 1 从 'const std::pair<_ty1>' 转换为 '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 个编译错误:
error C2665: 'std::pair<_ty1>::pair' : 3 个重载都不能转换所有参数类型
还有:
错误 C2679:二进制“=”:未找到采用“std::pair<_ty1>”类型右侧操作数的运算符(或没有可接受的转换)
【问题讨论】:
-
您绝不会创建多地图。
-
正如@john 所说:最外层对的第二个元素必须是
multimap,而不是pair。
标签: c++ multimap stdmap std-pair