如何横穿嵌套地图? 我想访问第二个嵌套地图中的值
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;
}
答案 0 :(得分:2)
您的itr
指向pair<char, map<int, int> >
,
因此它的second
是map<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';
}
}