递增常量前向迭代器
Increment a constant foward 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);
相关文章:
- 是否应避免从非常量迭代器转换为常量迭代器?
- 如何实现常量迭代器?
- 使用迭代器替换映射中的常量项的方法
- boost_multi_index迭代器取消引用给出常量
- 是否可以重用通常的迭代器来构建常量迭代器?
- 使用 declval 获取非常量迭代器
- 为什么在此代码中隐式转换为常量迭代器失败?
- const_iterator<T>和迭代器<常量T>有什么区别?
- 常量迭代器的问题
- 链表常量迭代器
- 输入迭代器必须具有常量解引用运算符吗
- 属性树常量迭代器的索引
- 递增常量前向迭代器
- C++中非常量列表迭代器的奇怪行为
- 如何正确地声明从非常量迭代器到指针的常量指针
- 列表的迭代器可以返回非常量引用吗?
- 无法取消引用映射常量迭代器的mapped_type
- 强制 foreach 使用常量迭代器
- 为什么这个迭代器常量
- std::设置迭代器常量限定符