我正在写一个iterator
(实际上它是const_iterator
针对我当前的对象,我也想创建一个reverse_const_iterator
也。
我环顾四周,看看如何做到这一点,我偶然发现了这个:
但是请注意,当迭代器被反转时,反转的版本不会指向范围内的相同元素,而是指向它之前的元素。就是这样,为了安排一个范围的最后一个元素:一个指向一个范围中一个过去的元素的迭代器,当反转时,被更改为指向最后一个元素(不超过它) 的范围(如果反转,这将是范围的第一个元素)。如果一个范围内第一个元素的迭代器被反转,反转的迭代器指向第一个元素之前的元素(如果反转,这将是范围的最后一个元素)。
这是从用户的角度发生的情况,还是当您取消引用 a 时reverse_iterator
,它不会通过为您提供您认为它指向的对象的值/引用来抽象它吗?这只是实现细节吗?
我的理解是:
for(i = obj.rbegin(); i != obj.rend(); i++)
相当于
for(i = obj.begin(); i != obj.end(); i++)
除非反过来。所以*i
在第一种情况下会向后穿过容器,在第二种情况下会向前穿过容器。我的直觉正确吗?