我想遍历 map 上所有跟随给定项目的项目。

不幸的是,我收到错误消息:'operator +'不匹配(操作数类型为'std::_ Rb_tree_iterator>'和'int')。

我究竟做错了什么?

#include <iostream>
#include <map>

int main ()
{
  std::map<char,int> m = {
    {'a',1},{'b',2},{'c',3},{'d',4},
  };

  // Position at 'b' (the 'given item')
  auto it = m.find('b');

  // Output everything after 'b':
  for (auto it1=it+1; it1!=m.end(); ++it1) {
    std::cout << it1->first << " => " << it1->second << '\n';
  }

  return 0;
}

最佳答案

std::map的迭代器不是随机访问的,因此它没有operator+()。您需要改用std::next():

 for (auto it1=std::next(it); it1!=m.end(); ++it1) {
    std::cout << it1->first << " => " << it1->second << '\n';
 }

关于c++ - 在std::map中给定的迭代器位置之后继续循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40709108/

10-11 15:56