在C ++中的3D Map中插入值

时间:2014-06-23 08:52:20

标签: c++ map

我是新手用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();

1 个答案:

答案 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