我正在寫一個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