Open In App

vector::crend() & vector::crbegin() with example

Improve
Improve
Like Article
Like
Save
Share
Report

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)

Example 1:

C++




#include <iostream> 
#include<vector> 
using namespace std; 
int main() 
vector<string>str{"avi","aniket","akash","ajay"}; 
vector<string>::const_reverse_iterator itr=str.crend()-1; 
std::cout<< *itr; 
return 0; 
}


Output

avi

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;

Example 1 : 

C++




#include <iostream> 
#include<vector> 
using namespace std; 
int main() 
vector<string> v{"akash","ajay","aniket","avi"}; 
vector<string>::const_reverse_iterator itr=v.crbegin(); 
cout<<*itr; 
return 0; 
}


Output

avi

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)

Auxiliary Space: 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.

Let us see the differences in a tabular form -:

  vector::crend() vector::crbegin()
1. It is used to return a const_reverse_iterator pointing to the theoretical element preceding the first element in the container. It is used to return  const_reverse_iterator to reverse beginning
2.

Its syntax is -:

const_reverse_iterator crend();

Its syntax is -:

const_reverse_iterator crbegin();

3. It does not take any parameters. It does not take any parameters.
4. Its complexity does not changes. Its complexity does not change.
5. Its iterator validity does not changes. Its iterator validity does not change.


Last Updated : 31 May, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads