Все контейнеры предлагают обратный просмотр своего содержимого с rbegin()
и rend()
. Эти две функции возвращают так называемые обратные итераторы , которые можно использовать как обычные, но будет выглядеть, как будто контейнер на самом деле перевернут.
#include <vector>
#include <iostream>
template<class InIt>
void print_range(InIt first, InIt last, char const* delim = "\n"){
--last;
for(; first != last; ++first){
std::cout << *first << delim;
}
std::cout << *first;
}
int main(){
int a[] = { 1, 2, 3, 4, 5 };
std::vector<int> v(a, a+5);
print_range(v.begin(), v.end(), "->");
std::cout << "\n=============\n";
print_range(v.rbegin(), v.rend(), "<-");
}
Живой пример на Ideone . Выход:
1->2->3->4->5
=============
5<-4<-3<-2<-1