2

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

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

目前我分两步执行此操作。首先创建内部地图,然后插入外部地图,如下所示,

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

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

nestedMap[int][int] = int;

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

谢谢普拉布

4

4 回答 4

7

map::operator[] 如果不存在,则自动创建键/值对。
(这就是它不是 const 的原因!)所以您不需要手动创建内部映射。

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

于 2012-11-19T08:22:56.510 回答
3

我相信最简单的单线是:

(*nestedMap)[int][int] = int;
于 2012-11-19T08:36:54.120 回答
1

访问operator[]通过->

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

这类似于

nestedMap[5][6] = 7;

ifnestedMap不是指针。

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

于 2012-11-19T08:25:55.187 回答
1

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

看下面的代码,是你想要的吗?

map<int, map<int, int> >* nestedMap  = new map<int, map<int, int> >;   
map<int, map<int, int> > &nestedMapAlais = *nestedMap;
nestedMapAlais[1][2] = 3;
于 2012-11-19T08:28:39.590 回答