Как перебрать карту карт C ++ - PullRequest
1 голос
/ 13 октября 2011

У меня есть карта карты

std::map< int, std::map<string, double> > myMap;
std::map< int, std::map<string, double> >::iterator itr;

Итерирование с:

   itr = myMap.find(nodeI);
   if (itr == myMap.end())
   {
        exit(1) ;
   }

приводит к ошибке:

      error: no match for âoperator=â in 
      âitr = ((const PushList*)this)->PushList::myMap.std::map&lt:_Key, _Tp, _Compare,    _Alloc>::find 

  [with _Key = int, _Tp = std::map&lt:std::basic_string&lt:char, std::char_traits&lt:char>,    
  std::allocator&lt:char> >, double, std::less&lt:std::basic_string&lt:char,   
  std::char_traits&lt:char>,  
  std::allocator&lt:char> > >, std::allocator&lt:std::pair&lt:const std::basic_string&lt:char, 
  std::char_traits&lt:char>, std::allocator&lt:char> >, double> > >, _Compare =  
  std::less&lt:int>, _Alloc = 
  std::allocator&lt:std::pair&lt:const int, std::map&lt:std::basic_string&lt:char, 
  std::char_traits&lt:char>, 
  std::allocator&lt:char> >, double, std::less&lt:std::basic_string&lt:char, 
  std::char_traits&lt:char>, 
  std::allocator&lt:char> > >, std::allocator&lt:std::pair&lt:const std::basic_string&lt:char, 
  std::char_traits&lt:char>, std::allocator&lt:char> >, double> > > > >](((const 
   int&)((const int*)((int*)nodeI))))â

Как я могу перебрать карту карты?

1 Ответ

4 голосов
/ 13 октября 2011

Из опубликованной ошибки видно, что вы делаете это из функции члена класса const. Есть ли шанс, что myMap окажется членом этого класса? Если да, то вместо этого вы должны использовать const_iterator. Вы должны сделать это в любом случае, так как вы не ожидаете изменить содержимое повторяющихся элементов.

...