vector::crend() & vector::crbegin() with example
These functions return useful iterators to access vector elements in reverse order (from end to beginning)
Using vector::crend()
It’s a public member function that returns a const_reverse_iterator pointing to the element preceding the first element. Return Value
A const_reverse_iterator to the reverse end of the sequence.
Syntax:
const_reverse_iterator crend() const noexcept;
Time Complexity – constant O(1)
Using vector::crbegin()
It returns a const_reverse_iterator pointing to the last element in the container (i.e., its reverse beginning).. Return Value
A const_reverse_iterator to the reverse beginning of the sequence.
Syntax:
const_reverse_iterator crbegin() const noexcept;
CPP
// CPP program to illustrate working of crbegin() // crend() #include <iostream> #include <vector> using namespace std; int main () { // initializing vector with values vector< int > vect = {10, 20, 30, 40, 50}; // for loop with crbegin and crend for ( auto i = vect.crbegin(); i != vect.crend(); i++) cout << ' ' << *i; //printing results cout << '\n' ; return 0; } |
Output:
50 40 30 20 10
Time Complexity – constant O(1)
Applications crend : Returns a reverse iterator to the element following the last element of the reversed container. It corresponds to the element preceding the first element of the non-reversed container. This element acts as a placeholder, attempting to access it results in undefined behavior crbegin : Returns a reverse iterator to the first element of the reversed container. It corresponds to the last element of the non-reversed container. Both are used in deque operations, concurrently accessing or modifying different elements is safe. The copy construction or assignment of the returned iterator is also guaranteed to never throw exception.