1

我有一张地图

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

导致错误:

      错误:与“operator=”不匹配
      â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>>, 双精度, std::less<:std::basic_string<:char,   
  std::char_traits<:char>,  
  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,
  std::char_traits<:char>,
  std::allocator<:char>>, 双精度, std::less<:std::basic_string<:char,
  std::char_traits<:char>,
  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))))â

如何迭代地图的地图?

4

1 回答 1

4

从您发布的错误中可以看出您是在类成员const函数中执行此操作的。有没有机会myMap碰巧是那个班级的成员?如果是这样,您想要的是const_iterator改用。无论如何您都应该这样做,因为您不希望修改迭代元素的内容。

于 2011-10-13T05:30:01.107 回答