Descending order in Map and Multimap of C++ STL

Generally, the default behavior of map and multimap map is to store elements is in ascending order. But we can store element in descending order by using the greater function.
The map in descending order:
m::find() – Returns an iterator to the element with key value ‘b’ in the map if found, else returns the iterator to end.
m::find() – Returns an iterator to the element with key value ‘b’ in the map if found, else returns the iterator to end.
m::erase() – Removes the key value from the map.
m::erase() – Removes the key value from the map.
m:: equal_range() – Returns an iterator of pairs. The pair refers to the bounds of a range that includes all the elements in the container which have a key equivalent to key.
m:: equal_range() – Returns an iterator of pairs. The pair refers to the bounds of a range that includes all the elements in the container which have a key equivalent to key.
m insert() – To insert elements in the map container.
m insert() – To insert elements in the map container.
m size() – Returns the number of elements in the map container.
m size() – Returns the number of elements in the map container.
m count() – Returns the number of matches to element with key value ‘a’ or ‘f’ in the map.
m count() – Returns the number of matches to element with key value ‘a’ or ‘f’ in the map.
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main () {
   map<char, int,greater <int>> m;
   map<char, int>::iterator it;
   m.insert (pair<char, int>('a', 10));
   m.insert (pair<char, int>('b', 20));
   m.insert (pair<char, int>('c', 30));
   m.insert (pair<char, int>('d', 40));
   cout<<"Size of the map: "<< m.size() <<endl;
   cout << "map contains:\n";
   for (it = m.begin(); it != m.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   for (char c = 'a'; c <= 'd'; c++) {
      cout << "There are " << m.count(c) << " element(s) with key " << c << ":";
      map<char, int>::iterator it;
      for (it = m.equal_range(c).first; it != m.equal_range(c).second; ++it)
         cout << ' ' << (*it).second;
      cout << endl;
   }
   if (m.count('a'))
      cout << "The key a is present\n";
   else
      cout << "The key a is not present\n";
   if (m.count('f'))
      cout << "The key f is present\n";
   else
      cout << "The key f is not present\n";
      it = m.find('b');
      m.erase (it);
      cout<<"Size of the map: "<<m.size()<<endl;
   cout << "map contains:\n";
   for (it = m.begin(); it != m.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   return 0;
}
Size of the map: 4
map contains:
d => 40
c => 30
b => 20
a => 10
There are 1 element(s) with key a: 10
There are 1 element(s) with key b: 20
There are 1 element(s) with key c: 30
There are 1 element(s) with key d: 40
The key a is present
The key f is not present
Size of the map: 3
map contains:
d => 40
c => 30
a => 10
Multimap in descending order:
Functions are used here:
mm::find() – Returns an iterator to the element with key value ‘b’ in the multimap if found, else returns the iterator to end.
mm::find() – Returns an iterator to the element with key value ‘b’ in the multimap if found, else returns the iterator to end.
mm::erase() – Removes the key value from the multimap.
mm::erase() – Removes the key value from the multimap.
mm:: equal_range() – Returns an iterator of pairs. The pair refers to the bounds of a range that includes all the elements in the container which have a key equivalent to key.
mm:: equal_range() – Returns an iterator of pairs. The pair refers to the bounds of a range that includes all the elements in the container which have a key equivalent to key.
mm insert() – To insert elements in the multimap container.
mm insert() – To insert elements in the multimap container.
mm size() – Returns the number of elements in the multimap container.
mm size() – Returns the number of elements in the multimap container.
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main () {
   multimap<char, int,greater <char>> mm;
   multimap<char, int>::iterator it;
   mm.insert (pair<char, int>('a', 10));
   mm.insert (pair<char, int>('b', 20));
   mm.insert (pair<char, int>('a', 30));
   mm.insert (pair<char, int>('b', 40));
   cout<<"Size of the multimap: "<< mm.size() <<endl;
   cout << "multimap contains:\n";
   for (it = mm.begin(); it != mm.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   for (char c = 'a'; c <= 'd'; c++) {
      cout << "There are " << mm.count(c) << " elements with key " << c << ":";
      map<char, int>::iterator it;
    for (it = mm.equal_range(c).first; it != mm.equal_range(c).second; ++it)
      cout << ' ' << (*it).second;
      cout << endl;
   }
   if (mm.count('a'))
      cout << "The key a is present\n";
   else
      cout << "The key a is not present\n";
   if (mm.count('f'))
      cout << "The key f is present\n";
   else
      cout << "The key f is not present\n";
   it = mm.find('b');
   mm.erase (it);
   cout<<"Size of the multimap: "<<mm.size()<<endl;
   cout << "multiap contains:\n";
   for (it = mm.begin(); it != mm.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   return 0;
}
Size of the multimap: 4
multimap contains:
b => 20
b => 40
a => 10
a => 30
There are 2 elements with key a: 10 30
There are 2 elements with key b: 20 40
There are 0 elements with key c:
There are 0 elements with key d:
The key a is present
The key f is not present
Size of the multimap: 3
multiap contains:
b => 40
a => 10
a => 30