我是新手用C ++进行地图制作并拥有一张3D地图,就像这样
map<int,map<const char*,const char*>>Map3D;
我想以这样的方式插入值:当两个const char *值都大于50时,int值递增。我保持跟踪const char *值。任何人都可以告诉我如何在此地图中插入值。我正在做这样的事情
Map3D.insert(pair<int,map<const char* ,const char*>(count,pair<const char*,const char*>(TempA,TempB)));
但它没有用。
修改
std::map<int,map<const char*,const char*>>::iterator it= Map3D.begin();
std::map<const char*, const char*>::iterator sub_it = subMap.begin();
答案 0 :(得分:1)
您丢失>
,并且无法以递归方式将std::pair
插入内部地图,您必须创建新地图或使用现有地图
map<int,map<const char*,const char*>> Map3D;
map<const char*,const char*> subMap;
const char hello[] = "hello";
const char world[] = "world";
subMap.insert(std::pair<const char*,const char*>(hello, world));
Map3D.insert(std::pair<int,map<const char*,const char*>>(22, subMap));
编辑:要回读元素,请查看http://www.cplusplus.com/reference/map/map/operator[]/
map<const char*,const char*> subMapCopy = Map3D[22];
cout << subMapCopy[hello]; // world
编辑II:使用迭代器:http://www.cplusplus.com/reference/map/map/begin/
std::map<int,map<const char*,const char*>>::iterator it= Map3D.begin();
std::map<const char*, const char*>::iterator sub_it = subMap.begin();
cout << it->second[sub_it->first]; // world