增加一个恒定的前向迭代器

时间:2012-10-18 17:40:11

标签: c++ iterator

我有一个函数在参数中使用常量迭代器,我想对函数进行递归调用,但是将迭代器递增1(不修改迭代器本身)。

我找到的唯一解决方案是创建迭代器的副本,并预先增加此副本,最后将其作为函数调用的参数传递。

func(const FowardIterator & i, const container & c) {
  // lot of very smart code

  FowardIterator next = i;

  ++next;
  func(next, c);
}

有没有更简单的方法可以做到这一点,一个不涉及创建临时迭代器的方法?

1 个答案:

答案 0 :(得分:1)

迭代器的复制速度非常快,因此const&没有理由接受迭代器; pass-by-value应该没问题,并且可以避免在函数体中显式复制迭代器。

也就是说,您也可以使用std::next复制迭代器并一步一步地完成所有操作:

func(std::next(i), c);