Map Crbegin Function

C++ map crbegin function is used to return a constant reverse iterator referring to the last element in the map container.

A constant reverse iterator of map moves in reverse direction and incrementing it until it reaches to the beginning (First element) of the map container and points to the constant element.

Syntax

Example

const_reverse_iterator crbegin() const noexcept; //since C++ 11

Parameter

Return value

It returns a constant reverse iterator pointing to the last element of the map.

Example 1

Let's see a simple example for crbegin function.

Example

#include <iostream>
#include <map>

using namespace std;

int main ()
{
  map<char,int> mymap;

  mymap['b'] = 100;
  mymap['a'] = 200;
  mymap['c'] = 300;

  cout << "mymap in reverse order:";
  for (auto rit = mymap.crbegin(); rit != mymap.crend(); ++rit)
    cout << " [" << rit->first << ':' << rit->second << ']';
  cout << '\n';

  return 0;
}

Output:

Output

mymap in reverse order: [c:300] [b:100] [a:200]

In the above example, crbegin function is used to return a constant reverse iterator pointing to the last element in the mymap map.

Because map store the elements in sorted order of keys. Therefore, iterating over a map will result in above order i.e. sorted order of keys.

Example 2

Let's see a simple example to iterate over the map in reverse order using while loop.

Example

#include <iostream>
#include <map>
#include <string>
#include <iterator>

using namespace std;
 
int main() {
 
	// Creating & Initializing a map of String & Ints
	map<string, int> mapEx = {
			{ "aaa", 10 },
			{ "ddd", 11 },
			{ "bbb", 12 },
			{ "ccc", 13 }
	};
 
	// Create a map iterator and point to the end of map
	 map<string, int>::const_reverse_iterator it = mapEx.crbegin();
 
	// Iterate over the map using Iterator till beginning.
	while (it != mapEx.crend()) {
		// Accessing KEY from elemencpp tutorialed by it.
		string word = it->first;
 
		// Accessing VALUE from elemencpp tutorialed by it.
		int count = it->second;
 
		cout << word << " :: " << count << endl;
 
		// Increment the Iterator to point to next entry
		it++;
	}
	return 0;
}

Output:

Output

ddd :: 11
ccc :: 13
bbb :: 12
aaa :: 10

In the above example, we are using while loop to const_iterate over the map in reverse order and crbegin function initializing the last element of the map.

Because map store the elements in sorted order of keys therefore, iterating over a map will result in above order i.e. sorted order of keys.

Example 3

Let's see a simple example to get the first element of the reversed map.

Example

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main ()
{
  map<int,int> m1 = {
                { 1, 10},
                { 2, 20 },
                { 3, 30 } };
          
    auto ite = m1.crbegin();
 
    cout << "The first element of the reversed map m1 is: ";
    cout << "{" << ite->first << ", "
         << ite->second << "}\n";

  return 0;
  }

Output:

Output

The first element of the reversed map m1 is: {3, 30}

In the above example, crbegin function returns the first element of the reversed map m1 i.e. {3,30}.

Example 4

Let's see a simple example to sort and calculate the highest marks.

Example

#include <iostream>
#include <string>
#include <map>
using namespace std;

int main ()
{
  map<int,int> marks = {
                { 400, 10},
                { 312, 20 },
                { 480, 30 },
                { 300, 40 },
                { 425, 50 }};

   cout << "Marks" << " | " << "Roll Number" << '\n';
   cout<<"______________________\n";
   
  map<int,int>::const_reverse_iterator rit;
  for (rit=marks.crbegin(); rit!=marks.crend(); ++rit)
    cout << rit->first << "   |  " << rit->second << '\n';

    auto ite = marks.crbegin();
 
    cout << "\nHighest Marks is: "<< ite->first <<" \n";
    cout << "Roll Number of Topper is: "<< ite->second << "\n";

  return 0;
  }

Output:

Output

Marks | Roll Number
______________________
480   | 30
425   | 50
400   | 10
312   | 20
300   | 40

Highest Marks is: 480 
Roll Number of Topper is: 30

In the above example, a map marks is implemented where the Roll Number is being stored as value and marks as key. This enables us to take advantage of the auto sorting in maps and lets us to identify the Roll number of the element with the highest marks.

Input Required

This code uses input(). Please provide values below: