我有一个函数在参数中采用常量迭代器,我想对该函数进行递归调用,但将我的迭代器递增一个(不修改迭代器本身)。
我找到的唯一解决方案是创建迭代器的拷贝,并预递增此拷贝以最终将其作为我的函数调用的参数传递。
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);
关于c++ - 增加一个常量前向迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960501/