如何为嵌套地图

时间:2015-07-31 00:35:26

标签: c++ dictionary nested-map

我有一个嵌套在另一个地图中的地图,我想为外部地图指定值,但我不太清楚如何做到这一点。这导致程序在开始之前就破坏了。我运行时没有显示任何错误

map<int, map<int, int>> outer;
map<int, int> inner;


outer.emplace(1, make_pair(2, 1));
outer.emplace(2, make_pair(2, 1));
outer.emplace(3, make_pair(2, 1));

outer.emplace(1, make_pair(3, 1));

任何帮助都会有所帮助

1 个答案:

答案 0 :(得分:1)

嗯,外部地图的mapped_type是map<int, int>,但是您尝试使用pair<int, int>构建它。你可以试试像

这样的东西
outer.emplace(1, map<int,int>{ { 2, 1 } });
outer.emplace(2, map<int,int>{ { 2, 1 } });
outer.emplace(3, map<int,int>{ { 2, 1 } });

outer.emplace(1, map<int,int>{ { 3, 1 } });

它有一个缺点,它很丑,甚至可能不是你想要的:最后一行没有效果,因为键1已经有一个值,并且emplace没有效果那种情况。如果您打算将条目{ 3, 1 }添加到第一个内部地图中,使其现在包含{ { 2, 1 }, { 3, 1 } },您可以改为使用以下构造,看起来好得多恕我直言:

outer[1].emplace(2, 1);
outer[2].emplace(2, 1);
outer[3].emplace(2, 1);

outer[1].emplace(3, 1);