反向迭代器的用法

反向迭代器的用法

每一个容器里面都有Iterator(迭代器),可以从容器的begin位置到end位置,通过++来遍历。
同样也有个反向迭代器reverse_iterator,从rbegin(=end-1)到rend(=begin-1)反向遍历,仍然通过++
可见能反向迭代的容器,应该是一个双向链表。

反向迭代器的用法:
ostream &   operator << (ostream &   out , list < int >  lst){
    list
< int > ::iterator iter = lst.begin();
    
while (iter != lst.end())
        
out << setw( 4 ) <<* iter ++ ;
    
out << endl;
    
return   out ;
}

int  main(){
    
int  a[] = { 2 , - 1 , 3 , 5 , - 9 , 11 , 2 , 1 };
    list
< int >  lst(a,a + sizeof (a) / sizeof ( int ));
    cout
<< lst;
    list
< int > ::reverse_iterator rIter = lst.rbegin(); // rbegin = reverse begin
     while (rIter != lst.rend()) // rend= reverse end
        cout << setw( 4 ) <<* rIter ++ ;
    system(
" pause " );
}

输出:
2  -1   3   5  -9  11   2   1
1   2  11  -9   5   3  -1   2

你可能感兴趣的:(反向迭代器的用法)