普通迭代器和反向迭代器的關係 C

2021-08-22 19:45:37 字數 513 閱讀 9303

vectorvector1;

for (size_t i = 1; i < 8; i++)

vector::reverse_iterator rit = find(vector1.rbegin(), vector1.rend(), 8);

vector::iterator it(rit.base());

cout << *rit << endl;

cout << *it << endl;

結果 *rit  為8, *it  為10

為什麼將反向迭代器轉換成普通迭代器,兩個迭代器指向的並不是相同的元素?

vector1 中的數為  2,4,6,8,10,12,14; 為了滿足迭代器範圍關係:左閉合區間 【);

即【vector1.rbegin(), rit) 和【rit.base(), vector1.begin())指向 vector 中相同的範圍,所以,rit 和it 生成相鄰位置而不是相同位置。crbegin() 和cend()也是如此。

迭代器 反向迭代器

c primer 中文版第四版 第273頁 9.3.2 begin和end成員 begin和end操作產生指向容器內第乙個元素和最後乙個元素的下乙個位置的迭代器,如下所示。這兩個迭代器通常用於標記包含容器中所有元素的迭代範圍。c.begin 返回乙個迭代器,它指向容器c的第乙個元素 c.end 返回...

C 迭代器之 反向迭代器

反向迭代器 reverse iterator 是普通迭代器的介面卡,通過重新定義自增和自減操作,以達到按反序遍歷元素的目的。如果在標準演算法庫中用反向迭代器來代替普通的迭代器,那麼執行結果與正常情況下相反。除此之外,其用法與普通迭代器完全一樣,我們不作詳細討論。這裡主要討論的是反向迭代器的乙個很特殊...

迭代器和反向迭代器,常量迭代器和非常量迭代器

迭代器的型別共有4種 iiterator,const iterator,reverse iterator,const reverse iterator include include include include using namespace std int main include inclu...