插入到C++中的嵌套映射中

Inserting into nested map in C++

本文关键字:嵌套 映射 插入 C++      更新时间:2023-10-16

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

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

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

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

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

nestedMap[int][int] = int;

有没有简单的方法可以插入指针类型的嵌套地图?

谢谢Prabu

如果键

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

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

我相信最简单的单行是:

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

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

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

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

->访问operator[]

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

这类似于

nestedMap[5][6] = 7;

如果nestedMap不是指针。

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