Как перебрать карту карт C++

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

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) ;
   }

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

      ошибка: нет совпадения для оператора = в 
      âitr = ((const PushList *) this) -> PushList:: myMap.std:: map <: _ Key, _Tp, _Compare, _Alloc>:: find 

  [с _Key = int, _Tp = std:: map <: std:: basic_string <: char, std:: char_traits <: char>,    
  std:: allocator <: char>>, double, std:: less <: std:: basic_string <: char,   
  станд:: char_traits <: символ>,  
  std:: allocator <: char>>>, std:: allocator <: std:: pair <: const std:: basic_string <: char, 
  std:: char_traits <: char>, std:: allocator <: char>>, double>>>, _Compare =  
  std:: less <: int>, _Alloc = 
  std:: allocator <: std:: pair <: const int, std:: map <: std:: basic_string <: char, 
  станд:: char_traits <: символ>, 
  std:: allocator <: char>>, double, std:: less <: std:: basic_string <: char, 
  станд:: char_traits <: символ>, 
  std:: allocator <: char>>>, std:: allocator <: std:: pair <: const std:: basic_string <: char, 
  std:: char_traits <: char>, std:: allocator <: char>>, double>>>>>] (((const 
   int &) ((const int *) ((int *) nodeI)))) â

Как я могу повторить карту карты?

1 ответ

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

Другие вопросы по тегам