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++ 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)