C++ Deque::crbegin() Function



The C++ std::deque::crbegin() function is used to return a constant reverse iterator pointing to the last element in the deque. This iterator traverse the deque from the end to the beginning, ensuring elements are accessed in reverse order. It is useful for iterating over the elements of a deque in reverse order without altering their values.

The constant iterator, prevents the modification of the elements that point to, providing the read-only access.

Syntax

Following is the syntax for std::deque::crbegin() function.

const_reverse_iterator crbegin() const noexcept;

Parameters

It does not accepts any parameters.

Return value

It returns a reverse iterator that point to the last element in the deque.

Exceptions

This function never throws exception.

Time complexity

The time complexity of this function is Constant i.e. O(1)

Example

In the following example, we are going to consider the basic usage of crbegin() function.

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'A', 'B', 'C', 'D'};
    std::deque<char>::const_reverse_iterator x = a.crbegin();
    std::cout << " " << *x << std::endl;
    return 0;
}

Output

Output of the above code is as follows −

D

Example

Consider the following example, where we are going to use the loop to iterate over the deque in reverse order using crbegin() and crend().

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'A', 'B', 'C', 'D'};
    for (auto x = a.crbegin(); x != a.crend(); ++x) {
        std::cout << *x << " ";
    }
    return 0;
}

Output

Following is the output of the above code −

D C B A 

Example

Let's look at the following example, where we are going to search for the element in the deque while iterating in reverse order.

#include <iostream>
#include <deque>
#include <algorithm>
int main()
{
    std::deque<char> a = {'A', 'B', 'C', 'D'};
    auto x = std::find(a.crbegin(), a.crend(), 'C');
    if (x != a.crend()) {
        std::cout << "Element found at position: " << std::distance(a.crbegin(), x) << std::endl;
    } else {
        std::cout << "Element not found." << std::endl;
    }
    return 0;
}

Output

If we run the above code it will generate the following output −

Element found at position: 1
deque.htm