在C ++中插入嵌套映射

时间:2012-11-19 08:21:16

标签: c++

假设我有一个类型指针的嵌套映射。然后是一个单行语句插入到嵌套映射中,

map<int, map<int, int> >* nestedMap;

目前我正在分2步完成这项工作。首先创建内部地图,然后插入外部地图,如下所示,

nestedMap->insert(make_pair(int, map<int, int>)(int, innermap));

如果地图不是指针类型,那么我可以像这样轻松插入,

nestedMap[int][int] = int;

是否有任何简单的方法可以插入类型指针的嵌套映射?

感谢 Prabu

4 个答案:

答案 0 :(得分:4)

map::operator[] 自动创建键/值对(如果不存在) (这就是为什么它不是常量!) 因此,您无需手动创建内部地图。

如果您想避免自动创建对,请使用map::at()

答案 1 :(得分:2)

我认为最简单的单线是:

(*nestedMap)[int][int] = int;

答案 2 :(得分:1)

通过operator[]访问->

nestedMap->operator[](5)[6] = 7;

这类似于

nestedMap[5][6] = 7;

如果nestedMap不是指针。

请注意,在这两种情况下都不必显式插入地图。

答案 3 :(得分:1)

如果我理解你的问题,你实际上可以使用引用而不是指针。您没有嵌套地图的问题,而是您的外部地图。

见下面的代码,你想要的是什么?

map<int, map<int, int> >* nestedMap  = new map<int, map<int, int> >;   
map<int, map<int, int> > &nestedMapAlais = *nestedMap;
nestedMapAlais[1][2] = 3;