在the cppreference page of reverse_iterator上,我找到以下注释
std::reverse_iterator
不能与返回引用的迭代器一起使用 成员对象(所谓的“存储迭代器”)。藏匿的一个例子 迭代器是std::filesystem::path::iterator
。
这种说法是否正确?如果是的话,为什么呢?
对我来说限制是没有意义的,因为我认为反向迭代器基本上交换operator ++
和operator --
(并将基础迭代器关闭一个)。
编辑:显然这个问题可能被误解:
我知道我们需要一次递减操作来实现反向迭代器。问题是为什么在构建reverse_iterator
期间没有实现这一点。然后避免使用存储迭代器的问题。但显然这不是它的完成方式,并且每次解除引用迭代器时都会执行减量。为什么呢?
答案 0 :(得分:4)
并将底层迭代器关闭一个
这就是原因。你必须在解除引用时召唤一个不是一个一个迭代器,并且如果对变形迭代器的破坏使从它获得的引用无效(如在存储迭代器的情况下),那么鼻子恶魔。