Sorted map c++ – C++ : Map Tutorial -Part 2: Map and External Sorting Criteria / Comparator

C++ map comparator: In the previous article, we have discussed about C++ std::list Tutorial, Example and Usage Details. Let us learn Map Tutorial -Part 2 in C++ Program.

Map Tutorial -Part 2:: Map and External Sorting Criteria/Comparator

Sorted map c++: In this article we will discuss how to use external sorting criteria/Comparator for keys in std::map and points that we need to take care with external sorting criteria.

Default sorting criteria :

std::map is a sorted associative container that contains key-value pairs with unique keys.

Let’s try with an example:

#include <iostream>
#include <map>
#include <string>
#include <iterator>
int main()
{
    std::map<std::string, int> metals;
    metals["Rhodium"] = 1;
    metals["Platinum"] = 2;
    metals["Gold"] = 3;
    metals.insert(std::make_pair("Ruthenium", 4));
    metals.insert(std::make_pair("Iridium", 5));
    metals.insert(std::make_pair("Osmium", 6));
    metals.insert(std::make_pair("Palladium", 7));
    metals.insert(std::make_pair("Rhenium", 8));
    metals.insert(std::make_pair("Silver", 9));
    metals.insert(std::make_pair("Indium", 10));
    std::map<std::string, int>::iterator it = metals.begin();
    for( ; it != metals.end(); it++)
        std::cout<<it->first<<" :: "<<it->second<<std::endl;
    return 0;
}

Output :

Gold :: 3

Indium :: 10

Iridium :: 5

Osmium :: 6

Palladium :: 7

Platinum :: 2

Rhenium :: 8

Rhodium :: 1

Ruthenium :: 4

Silver :: 9

The elements in output are in lexicographical order(dictionary order or alphabetical order).

External sorting criteria i.e Comparator :

C++ ordered map: Let’s try with an example:

#include <iostream>
#include <map>
#include <string>
#include <iterator>
#include <string>
#include <iterator>
struct metalComparator
{
    bool operator()(const std::string & left, const std::string & right) const
    {
        return (left > right);
    }
};

int main()
{
    std::map<std::string, int, metalComparator > metals;
    metals["Rhodium"] = 1;
    metals["Platinum"] = 2;
    metals["Gold"] = 3;
    metals.insert(std::make_pair("Ruthenium", 4));
    metals.insert(std::make_pair("Iridium", 5));
    metals.insert(std::make_pair("Osmium", 6));
    metals.insert(std::make_pair("Palladium", 7));
    metals.insert(std::make_pair("Rhenium", 8));
    metals.insert(std::make_pair("Silver", 9));
    metals.insert(std::make_pair("Indium", 10));
    for(std::map<std::string, int>::iterator it = metals.begin(); it != metals.end(); it++)
   std::cout<<it->first<<" :: "<<it->second<<std::endl;

    return 0;
}

Output:

Silver :: 9

Ruthenium :: 4

Rhodium :: 1

Rhenium :: 8

Platinum :: 2

Palladium :: 7

Osmium :: 6

Iridium :: 5

Indium :: 10

Gold :: 3

With different external key sorting criteria :

How to sort a map c++: We can compare two std::map objects using operator ==, <, >, !=, etc.

Let’s try with an example:

#include <iostream>
#include <map>
#include <string>
#include <iterator>
struct metalComparator
{
    bool operator()(const std::string & left, const std::string & right) const
    {
        return (left > right);
    }
};
int main()
{
std::map<std::string, int > metals;
metals["Rhodium"] = 1;
metals["Platinum"] = 2;
metals["Gold"] = 3;
metals.insert(std::make_pair("Ruthenium", 4));
metals.insert(std::make_pair("Iridium", 5));
metals.insert(std::make_pair("Osmium", 6));
metals.insert(std::make_pair("Palladium", 7));
metals.insert(std::make_pair("Rhenium", 8));
metals.insert(std::make_pair("Silver", 9));
metals.insert(std::make_pair("Indium", 10));
std::map<std::string, int>::iterator it = metals.begin();
for( ; it != metals.end(); it++)
    std::cout<<it->first<<" :: "<<it->second<<std::endl;
std::cout<<"External sorting criteria for keys "<<std::endl;
std::map<std::string, int, metalComparator > metals_2;
for(std::map<std::string, int>::iterator it = metals_2.begin(); it != metals_2.end(); it++)
        std::cout<<it->first<<" :: "<<it->second<<std::endl;
   return 0;
}


Output :

Gold :: 3

Indium :: 10

Iridium :: 5

Osmium :: 6

Palladium :: 7

Platinum :: 2

Rhenium :: 8

Rhodium :: 1

Ruthenium :: 4

Silver :: 9

External sorting criteria for keys