c++ - 如何迭代 map 的 C++ map

标签 c++ dictionary iterator multimap multi-mapping

我有一张 map 的 map

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<:_Key, _Tp, _Compare,    _Alloc>::find 

  [with _Key = int, _Tp = std::map<:std::basic_string<:char, std::char_traits<:char>,    
  std::allocator<:char> >, double, 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> >, double, 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))))â

如何迭代map的map?

最佳答案

从您发布的错误可以看出您是在类成员 const 函数中执行此操作。 myMap 是否有可能恰好是该类的成员?如果是这样,您需要的是改用 const_iterator。无论如何你都应该这样做,因为你不希望修改迭代元素的内容。

关于c++ - 如何迭代 map 的 C++ map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749648/

相关文章:

C++ 使用 for 循环迭代 2 个 vector

c++ - 有没有一种很好的方法来实现具有默认失败情况的条件类型?

c++ - Visual Studio 2017 中的 Windows SDK 版本设置

c++ - WinAPI 和 C++ I/O 中的字符串

c++ - C++简单项目中的 undefined reference

python - 如果某个键的值不止一次,则从列表中删除该元素

c++ - 使用 std::find 在 std::map 中进行不区分大小写的搜索

algorithm - 如何在随机生成的六角形 map 中找到岛屿?

c++ - 使用迭代器范围将单个元素附加到容器

java - java迭代器中的自定义链表无法迭代整个列表