穿越嵌套地图

时间:2019-01-17 01:11:17

标签: c++

如何横穿嵌套地图? 我想访问第二个嵌套地图中的值

int main ()
{

  std::map<int, int> cool;
  cool.insert(make_pair(8,9));

  std::map<char, std::map<int, int> > mmap;
  mmap.insert(std::make_pair('a', cool));
  cout << mmap['a'][8];

  std::map<char, map<int, int> >::iterator itr;
  for(itr = mmap.begin(); itr != mmap.end(); itr++){
    cout << itr->second << endl;
  }

  return 0;
}

2 个答案:

答案 0 :(得分:2)

您的itr指向pair<char, map<int, int> >
因此它的secondmap<int, int>
因此,迭代到 即可完成操作:

for(map<int, int>::iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2){
  cout << itr2->second << endl;
}

答案 1 :(得分:1)

使用C ++ 17,您可以使用结构化绑定来完成此任务:

for (auto const& [key, val] : mmap) {
  for (auto const& [k, v] : val) {
    std::cout << key << " " << k << " " << v << '\n';
  }
}