vector::rend function


The vector rend function returns a reverse_iterator that points to the position before the first element in a vector.

reverse_iterator rend();
const_reverse_iterator rend() const;

The first function returns read and write reverse_iterator that points to the position before the first position in the vector.Whereas the second function returns read only reverse_iterator.Note the iteration is done in reverse order.

First function:
Parameters:
none

Return type
reverse_iterator

Second function:
Parameters:
none

Return type
const_reverse_iterator

Consider a vector shown in the code below.The ‘vecRIt’ object will accept the reverse_iterator returned by rend( ) function.

Code example

vector<int> vec={ 23 , 45 , 9 , 10 } ;

vector<int>::reverse_iterator vecRIt =vec.rend( ) ;

The picture below shows the position pointed by ‘vecRIt’ object in the vector storage.

Vector rend()

Since the iteration is done in the reverse order,to access the value using the reverse_iterator returned by the rend( ) function we will use negative index values instead of the normal +ve values.The negativity of the indexes signify accessing the storage to the right of where the reverse_iterator points to.If we use a positive index value we will be accessing the storage to the left side of the iterator.In other words we will pointing to some invalid storage.

cout<< vecRIt[-1] << ” , ” << vecRIt[-2] << ” , ” << vecRIt[-3] << ” , ” vecRIt[-4] ;

//Using the normal index value
cout<< vecRIt[0] << ” , ” << vecRIt[1] << ” , ” << vecRIt[2] << ” , ” vecRIt[3] ;

Output,

23 , 45 , 9 , 10
undefined value , undefined value , undefined value , undefined value