How to Iterate a Map in Reverse Order – C++

In the previous article, we have discussed about C++ Map Insert Example. Let us learn how to Iterate a Map in Reverse Orde in C++ Program.

Iterate a Map in Reverse Order

In this article we will see how to iterate a map in reverse order.

As we know elements are stored in a sorted order in map.

For example, if the below elements need to be stored in map

{ "a", 1 },
{ "c", 3 },
{ "d", 4 },
{ "b", 2 }
Then it will be stored as below in the map.
{ "a", 1 },
{ "b", 2 },
{ "c", 3 },
{ "d", 4 },
By using the reverse iterator of map we will iterate the map in reverse order.
std::map<std::string, int>::reverse_it
reverse_it moves in backward direction. So it will start from last element of the map and will move to first element of the map.
Where,
  1. std::map::rbegin() – It will point to the last element of the map.
  2. std::map::rend() – It will point to the first element of the map.
#include <iostream>
#include <map>
#include <string>
#include <iterator>

int main() 
{
    // map of String & Int created & Initialized
    std::map<std::string, int> sample_Map = {
            { "a", 1 },
            { "c", 3 },
            { "d", 4 },
            { "b", 2 }
    };
    
    // map iterator created
    // which pointing to the end of map
    std::map<std::string, int>::reverse_iterator it = sample_Map.rbegin();
    
    // Iterating over the map using Iterator till start of map.
    while (it != sample_Map.rend()) {
        // key accessed 
        std::string word = it->first;
        // value accessed 
        int count = it->second;
        std::cout << word << " :: " << count << std::endl;
        // Incrementing the Iterator to point to next entry
        it++;
    }
    return 0;
}
Output :

d :: 4
c :: 3
b :: 2
a :: 1