zoukankan      html  css  js  c++  java
  • QSet<T>自定义类型需要定义==和qHash()函数

    If you want to use other types as the key, make sure that you provide operator==() and a qHash() implementation.

    #ifndef EMPLOYEE_H
    #define EMPLOYEE_H
    
    class Employee
    {
    public:
        Employee() {}
        Employee(const QString &name, QDate dateOfBirth);
        ...
    
    private:
        QString myName;
        QDate myDateOfBirth;
    };
    
    inline bool operator==(const Employee &e1, const Employee &e2)
    {
        return e1.name() == e2.name()
               && e1.dateOfBirth() == e2.dateOfBirth();
    }
    
    inline uint qHash(const Employee &key, uint seed)
    {
        return qHash(key.name(), seed) ^ key.dateOfBirth().day();
    }
    
    #endif // EMPLOYEE_H

    In the example above, we've relied on Qt's global qHash(const QString &, uint) to give us a hash value for the employee's name, and XOR'ed this with the day they were born to help produce unique hashes for people with the same name.

    Note that the implementation of the qHash() overloads offered by Qt may change at any time. You must not rely on the fact that qHash() will give the same results (for the same inputs) across different Qt versions.

  • 相关阅读:
    Lookup注解
    解决数据量大,分页查询慢的方案
    一个http的请求分析
    MYSQL
    什么是性能优化
    编码规范随笔
    装饰者模式
    单例模式
    J.U.C并发包(1)
    Java内存模型
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/13672059.html
Copyright © 2011-2022 走看看