假设我有一个类型指针的嵌套映射。然后是一个单行语句插入到嵌套映射中,
map<int, map<int, int> >* nestedMap;
目前我正在分2步完成这项工作。首先创建内部地图,然后插入外部地图,如下所示,
nestedMap->insert(make_pair(int, map<int, int>)(int, innermap));
如果地图不是指针类型,那么我可以像这样轻松插入,
nestedMap[int][int] = int;
是否有任何简单的方法可以插入类型指针的嵌套映射?
感谢 Prabu
答案 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;