c++ - 增加一个常量前向迭代器

标签 c++ iterator

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

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

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/

相关文章:

C++模板和迭代器

java - list.iterator() 可以返回 null 吗?

c++ - 如何为 range-v3 创建自定义容器

c++ - C++ STL 中的 const_iterator 和非 const 迭代器有什么区别?

python - “yield”关键字有什么作用?

c++ - 在 makefile 中设置 GCC 路径

c++ - 注释掉函数体在 VS 2012 中给出奇怪的链接错误

c++ - 如何仅插入数字和字母应该显示一条消息或其他内容

c++ - 为什么我的函数不打印出双向链表中的第一个节点?

c++ - 模板参数提取和修改