C++ Unordered_map::operator== Function



The C++ std::unordered_map::operator== function is used to check whether two unordered_maps are equal or not. if both unordered_map are equal it returns true otherwise false.

If we are comparing unordered_maps with different data types, then the unordered_map::operator== function will displays a error. It only works with unordered_maps that have the same data type.

Syntax

Following is the syntax of std::unordered_map::operator== function.

bool operator==(const unordered_map<Key,T,Hash,Pred,Alloc>& first,
                const unordered_map<Key,T,Hash,Pred,Alloc>& second
               );

Parameters

  • first − First unordered_map object.
  • second − Second unordered_map object.

Return value

This function returns true if both unordered_map are equal otherwise false.

Example 1

In the following example, let's see the usage of operator== function.

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<char, int> um1;
   unordered_map<char, int> um2;
   if (um1 == um2)
      cout << "Both unordered_maps are equal" << endl;
   um1.emplace('a', 1);
   if (!(um1 == um2))
      cout << "Both unordered_maps are not equal" << endl;
   return 0;
}

Output

Let us compile and run the above program, this will produce the following result −

Both unordered_maps are equal
Both unordered_maps are not equal

Example 2

Let's look at the following example, where we going to apply the operator== function to check whether both are equal or not on the unordered_maps that store same elements but in different order.

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<char, int> um1 = {{'C', 3}, {'B', 2}, {'A', 1}, {'D', 4}};
   unordered_map<char, int> um2 = {{'D', 4}, {'A', 1}, {'B', 2}, {'C', 3}};
   if (um1 == um2)
      cout << "Both unordered_maps are equal" << endl;
   return 0;
}

Output

Following is the output of the above code −

Both unordered_maps are equal

Example 3

Consider the another sceniro, where we going to apply the operator== function to check whether both are equal or not on the unordered_maps that store different elements but of same data type.

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<char, int> um1 = {{'E', 5}, {'f', 6}, {'g', 7}, {'H', 8}};
   unordered_map<char, int> um2 = {{'D', 4}, {'A', 1}, {'B', 2}, {'C', 3}};
   if (um1 == um2)
      cout << "Both unordered_maps are equal" << endl;
   if (!(um1 == um2))
      cout << "Both unordered_maps are not equal" << endl;
   return 0;
}

Output

Output of the above code is as follows −

Both unordered_maps are not equal
Advertisements