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 typeT
Element typea
Objects of typeX
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 |
Standard library
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 << ' ';
}
}
Result
9 5 1 4 1 3