C++ 穿过嵌套映射的

C++ 穿过嵌套映射的,c++,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<ch

如何穿过嵌套贴图? 我想访问第二个嵌套映射中的值

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;
}
int main()
{
地图酷;
酷。插入(制作成对(8,9));
std::map-mmap;
mmap.插页(标准::制作成对('a',酷));

cout您的
itr
指向

所以它的
第二个
是一个
地图

因此,一个迭代器将完成以下任务:

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

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

for (auto const& [key, val] : mmap) {
  for (auto const& [k, v] : val) {
    std::cout << key << " " << k << " " << v << '\n';
  }
}
for(自动常量和[key,val]:mmap){
用于(自动常数和[k,v]:val){

std::cout这种风格越来越像python:)快速提问,为什么我不能像*(itr)那样对列表、向量和Deques进行解引用?@YaGetMeh:可以。但我发现箭头更整洁。