每一個(gè)容器里面都有Iterator(迭代器),可以從容器的begin位置到end位置,通過(guò)++來(lái)遍歷。
同樣也有個(gè)反向迭代器reverse_iterator,從rbegin(=end-1)到rend(=begin-1)反向遍歷,仍然通過(guò)++
可見(jiàn)能反向迭代的容器,應(yīng)該是一個(gè)雙向鏈表。
反向迭代器的用法:
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