Horje
Custom Comparator for Multimap in C++

In C++ multimap is a container to store key-value pairs allowing duplicate keys which is not allowed in a map container. By default, the multimap container uses the less than ‘<‘ operator to compare the keys for ordering the entries but also allows the use of the custom comparator. In this article, we will learn how to use a multimap with a custom comparator in C++.

Custom Comparator for Multimap in C++

To use a std::multimap with a custom comparator, we can define a comparison function or a functor (a class that overloads the operator()) and then use it as a template parameter when declaring the multimap so that the elements of the multimap will be ordered automatically based on the conditions mentioned in the custom comparator.

C++ Program to Use a Multimap with a Custom Comparator

The below example demonstrates how we can use a multimap with a custom comparator in C++.

C++

// C++ Program To Use a Multimap With a Custom Comparator
#include <iostream>
#include <map>
#include <string>
using namespace std;
  
// Custom comparator functor for multimap
struct CustomComparator {
    bool operator()(const string& a, const string& b) const
    {
        // Compare based on string length
        return a.length() < b.length();
    }
};
  
int main()
{
  
    // Creating a multimap using  custom comparator
    multimap<string, int, CustomComparator> mp2
        = { { "apple", 5 },
            { "apple", 10 },
            { "banana", 3 },
            { "orange", 4 },
            { "kiwi", 2 } };
  
    // Printing elements of the multimap
    cout << "Multimap using custom comparator" << endl;
    for (auto pair : mp2) {
        cout << pair.first << ": " << pair.second << endl;
    }
  
    return 0;
}

Output

Multimap using custom comparator
kiwi: 2
apple: 5
apple: 10
banana: 3
orange: 4

Time Complexity: O(N log N), here N is the number of elements in a multimap.
Auxiliary Space: O(N)




Reffered: https://www.geeksforgeeks.org


C++

Related
How to Declare Pointer to an Array of Strings in C++? How to Declare Pointer to an Array of Strings in C++?
How to Merge Two STL Maps in C++? How to Merge Two STL Maps in C++?
How to Find the Size of a Stack in C++? How to Find the Size of a Stack in C++?
How to Find the Last Element in a Map in C++? How to Find the Last Element in a Map in C++?
How to Create a Map of Maps in C++? How to Create a Map of Maps in C++?

Type:
Geek
Category:
Coding
Sub Category:
Tutorial
Uploaded by:
Admin
Views:
10