- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- 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
To Continue Learning Please Login
Login with Google