Computer >> Máy Tính >  >> Lập trình >> C ++

Làm thế nào để tạo một bản đồ không có thứ tự của lớp do người dùng xác định trong C ++?


Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để hiểu cách tạo một bản đồ không có thứ tự của lớp do người dùng xác định trong C ++.

Để tạo một bản đồ không có thứ tự từ một lớp do người dùng xác định, chúng ta sẽ chuyển hàm băm vì phương thức lớp là đối số thứ ba.

Ví dụ

#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;
}

Đầu ra

[Laxman, Prasad] = > 100
[kartik, kapoor] = > 100
[Ram, Singh] = > 200