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 |
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 << ' '; } }
Output:
9 5 1 4 1 3
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/ReversibleContainer