Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีสร้าง unordered_map ของคลาสที่ผู้ใช้กำหนดใน C++


ในบทช่วยสอนนี้ เราจะอภิบายโปรแกรมเพื่อทำความเข้าใจวิธีสร้าง unordered map ของคลาสที่ผู้ใช้กำหนดใน C++

เพื่อสร้าง unordered map จากคลาสที่ผู้ใช้กำหนด เราจะส่งฟังก์ชันแฮชเป็นอาร์กิวเมนต์ที่สามของคลาส

ตัวอย่าง

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

เอาต์พุต

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