Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tạo unordered_set của class/struct tự định nghĩa trong C++


Trong hướng dẫn này, ta sẽ thảo luận chương trình để hiểu cách tạo unordered_set của class hoặc struct tự định nghĩa trong C++.

Để làm được điều này, ta tạo một kiểu struct và so sánh hai kiểu struct với hàm do người dùng định nghĩa để lưu hàm băm (hash function).

Ví dụ

#include <bits/stdc++.h>
using namespace std;

struct Test {
    int id;
    bool operator==(const Test& t) const {
        return (this->id == t.id);
    }
};

class MyHashFunction {
public:
    size_t operator()(const Test& t) const {
        return t.id;
    }
};

int main() {
    Test t1 = {110}, t2 = {102}, t3 = {101}, t4 = {115};
    unordered_set<Test, MyHashFunction> us;
    us.insert(t1);
    us.insert(t2);
    us.insert(t3);
    us.insert(t4);
    for(auto e : us) {
        cout << e.id << " ";
    }
    return 0;
}

Kết quả

115 101 110 102