Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to create an unordered_map of user defined class in C++?
In this tutorial, we will be discussing a program to understand how to create an unordered map of user defined class in C++.
To create an unordered map from a user defined class, we will pass the hash function as the class method being the third argument.
Example
#include <bits/stdc++.h>
using namespace std;
//objects of class to be used as key values
struct Person {
string first, last;
Person(string f, string l){
first = f;
last = l;
}
bool operator==(const Person& p) const{
return first == p.first && last == p.last;
}
};
class MyHashFunction {
public:
//using sum of length as hash function
size_t operator()(const Person& p) const{
return p.first.length() + p.last.length();
}
};
int main(){
unordered_map<Person, int, MyHashFunction> um;
Person p1("kartik", "kapoor");
Person p2("Ram", "Singh");
Person p3("Laxman", "Prasad");
um[p1] = 100;
um[p2] = 200;
um[p3] = 100;
for (auto e : um) {
cout << "[" << e.first.first << ", "<< e.first.last<< "] = > " << e.second << '\n';
}
return 0;
}
Output
[Laxman, Prasad] = > 100 [kartik, kapoor] = > 100 [Ram, Singh] = > 200
Advertisements