我正在写一个iterator
(实际上它是const_iterator
我目前的目标,我希望也能创造一个reverse_const_iterator
也。C++迭代和反向迭代
我环顾四周,看看如何做到这一点,我跨this偶然:
通知然而,当一个迭代反转时,反转版本 不指向该范围中的相同元件,但对一个 前述它之所以如此,以便安排为一个范围的过去最后 元素:它erator指向 中的过去末端元素,如果反转,则该范围将更改为指向范围的最后一个元素(不是 )(如果 已颠倒,这将是该范围的第一个元素)。如果某个范围中的第一个元素的迭代器与 相反,则反向迭代器指向第一个元素之前的元素(如果 颠倒过来,这将是该范围的过去末端元素)。
这是从用户的角度来看会发生什么,或者取消引用reverse_iterator
给你,你认为它指向的对象的值/引用则它不是抽象的送人了?这只是实现细节?
我的理解是:
for(i = obj.rbegin(); i != obj.rend(); i++)
相当于
for(i = obj.begin(); i != obj.end(); i++)
除了在反向。所以*i
将在第一种情况下通过容器后退,并在第二种情况下通过容器前进。我的直觉是否正确?
这只是工作。 – 2013-02-27 10:07:20
附注:使用迭代器时,应始终使用前增量('++ i')而不是后增量,因为它可以更高效。 – 2014-04-25 13:24:05