从3D地图插入和读数值(Inserting and Reading Values from 3D M

2019-10-20 08:37发布

首先,我读了所有与此相关的问题以前问过的问题,但并没有能够解决我的问题。 我有一个3D地图,

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

现在,我插入重视在像这样的整型值最大为5 ,但每个int值有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));

计数值将后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所以它仅示出5 TEMPA和TempB的值。 如果只在迭代子图,它显示所有的值

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;

任何人都可以指导我如何我可以读取所有的值。 谢谢

Answer 1:

一切都是正确的。 因为你每一次代码插入相同的子图:

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));


文章来源: Inserting and Reading Values from 3D Map
标签: c++ map