每一个容器里面都有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