C++ named requirements: ReversibleContainer

A ReversibleContainer is a Container that has iterators that meet the requirements of either LegacyBidirectionalIterator or LegacyRandomAccessIterator. Such iterators allow a ReversibleContainer to be iterated over in reverse.

Requirements

X Container type
T Element type
a Objects of type X

Types

expression return type conditions complexity
X::reverse_iterator iterator type whose value type is T reverse_iterator<iterator> compile time
X::const_reverse_iterator constant iterator type whose value type is T reverse_iterator<const_iterator> compile time

Methods

expression return type conditions complexity
a.rbegin() reverse_iterator; const_reverse_iterator for constant a reverse_iterator(end()) constant
a.rend() reverse_iterator; const_reverse_iterator for constant a reverse_iterator(begin()) constant
a.crbegin() const_reverse_iterator const_cast<X const&>(a).rbegin() constant
a.crend() const_reverse_iterator const_cast<X const&>(a).rend() constant

Example

The following example iterates over a vector (which has random-access iterators) in reverse.

#include <vector>
#include <iostream>
 
int main()
{
    std::vector<int> v = {3, 1, 4, 1, 5, 9};
 
    for(std::vector<int>::reverse_iterator i = v.rbegin(); i != v.rend(); ++i) {
        std::cout << *i << '\n';
    }
}

Output:

9
5
1
4
1
3

Standard library

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/named_req/ReversibleContainer