插入和读取值从3D地图

Inserting and Reading Values from 3D Map

本文关键字:3D 地图 读取 插入      更新时间:2023-10-16

首先我看了之前问的所有与这个问题相关的问题,但是没有能够解决我的问题。我有一个3D地图,

map<int,map<const char*, const char*>> map3D;
map<const char*, const char*> submap;

现在我像这样插入值,int值的最大值是5,但是对于每个int值,submap有50 key and value

我像这样插入值

submap.insert(std::pair<const char*,const char*>(TempA, TempB));
map3D.insert(pair<int,map<const char*,const char*>>(count,submap));

count值将在Temp1和TempB值超过50个值后增加。现在我想读回它的值,为此我正在这样做,就像在这个问题中提到的,如何循环通过一个c++映射的映射?

std::map<int,map<const char*,const char*>>::iterator out_it;
    for(out_it =map3D.begin();out_it != map3D.end();++out_it)
    {
        for(std::map<const char*, const char*>::const_iterator in_it=out_it->second.begin();in_it != out_it->second.end(); ++in_it)
            std::cout << in_it->first << " => " << in_it->second <<endl;
}

因为int值只有5,所以它只显示TempA和TempB的5个值。如果只在submap中迭代,则显示所有值

for(std::map<const char*, const char*>::const_iterator in_it=submap.begin();in_it != submap.end(); ++in_it)
                std::cout << in_it->first << " => " << in_it->second <<endl;

谁能指导我如何读取所有的值。由于

一切正常。因为每次代码都插入相同的子映射:

submap.insert(std::pair<const char*,const char*>(TempA, TempB));
map3D.insert(pair<int,map<const char*,const char*>>(count,submap));

如果你需要包含所有值的子地图,那么你需要先填充你的子地图,然后插入到map3D或使用指针指向子地图。

map<int,map<const char*, const char*>*> map3D;
map<const char*, const char*>* submap = new map<const char*, const char*>();
...
submap->insert(std::pair<const char*,const char*>(TempA, TempB));
map3D.insert(pair<int,map<const char*,const char*>*>(count,submap));

否则,当你想插入到map3D中时,你需要每次都创建子地图。

map<const char*, const char*> submap;
submap.insert(std::pair<const char*,const char*>(TempA, TempB));
map3D.insert(pair<int,map<const char*,const char*>>(count,submap));