递增常量前向迭代器

Increment a constant foward iterator

本文关键字:迭代器 常量      更新时间:2023-10-16

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

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

func(const FowardIterator & i, const container & c) {
// lot of very smart code
FowardIterator next = i;
++next;
func(next, c);
}

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

迭代器的复制速度应该非常快,所以真的没有理由接受一个const&; 按值传递应该没问题,并且可以避免在函数主体中显式复制迭代器。

也就是说,您还可以使用std::next复制迭代器并在一个步骤中推进所有内容:

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