Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何填充映射的多重映射?_C++_Multimap_Stdmap_Std Pair - Fatal编程技术网

C++ 如何填充映射的多重映射?

C++ 如何填充映射的多重映射?,c++,multimap,stdmap,std-pair,C++,Multimap,Stdmap,Std Pair,我有以下映射的多重映射: map<int, multimap<int, pair<string, string>>> modCreAlt; 但我得到以下编译错误: C:\ProgramFiles(x86)\Microsoft Visual Studio 9.0\VC\include\utility(49): 错误C2664:'std::multimap::multimap(const std::less&'): 无法将参数1从“const std::pair

我有以下映射的多重映射:

map<int, multimap<int, pair<string, string>>> modCreAlt;
但我得到以下编译错误:

C:\ProgramFiles(x86)\Microsoft Visual Studio 9.0\VC\include\utility(49):
错误C2664:'std::multimap::multimap(const std::less&'):
无法将参数1从“const std::pair”转换为“const std::less&”

----
我还尝试以这种方式插入一行:

modCreAlt.insert(pair<int, multimap<int, pair<string, string>>>(42, make_pair(priority, make_pair(alertInv, upperAlertInv))));
这分别导致以下两个编译错误:

错误C2665:'std::pair::pair':3个重载都不能转换所有参数类型

以及:

错误C2679:二进制“=”:未找到接受类型为“std::pair”的右操作数的运算符(或没有可接受的转换)

也许像这样(未经测试)


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

您在任何时候都不会创建多重映射。正如@john所说:最外层对的第二个元素必须是
多重映射,而不是
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));
int priority = ... ;
string alertInv = ... ;
string upperAlertInv = ... ;

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