限制`reverse_iterator`

时间:2018-06-13 22:12:21

标签: c++ stl iterator

the cppreference page of reverse_iterator上,我找到以下注释

  

std::reverse_iterator不能与返回引用的迭代器一起使用   成员对象(所谓的“存储迭代器”)。藏匿的一个例子   迭代器是std::filesystem::path::iterator

这种说法是否正确?如果是的话,为什么呢?

对我来说限制是没有意义的,因为我认为反向迭代器基本上交换operator ++operator --(并将基础迭代器关闭一个)。

编辑:显然这个问题可能被误解: 我知道我们需要一次递减操作来实现反向迭代器。问题是为什么在构建reverse_iterator期间没有实现这一点。然后避免使用存储迭代器的问题。但显然这不是它的完成方式,并且每次解除引用迭代器时都会执行减量。为什么呢?

1 个答案:

答案 0 :(得分:4)

  

并将底层迭代器关闭一个

这就是原因。你必须在解除引用时召唤一个不是一个一个迭代器,并且如果对变形迭代器的破坏使从它获得的引用无效(如在存储迭代器的情况下),那么鼻子恶魔。