自定义数据结构存入哈希表

该代码示例展示了如何在Qt环境中创建一个名为Person的自定义类,包含name、age和date属性。Person类重写了相等运算符以基于name和age进行比较。同时,定义了一个qHash函数,使用date的toString()来生成哈希值,确保数据按插入顺序存储在QHash中。程序通过插入多个Person对象到QHash中并遍历展示其内容,强调了自定义数据结构在哈希容器中的应用。
摘要由CSDN通过智能技术生成
#include <QApplication>
#include <QHash>
#include <QDebug>
#include <QDateTime>

class Person {
public:
    QString name;
    int age;
    QDateTime date = QDateTime::currentDateTime();
    Person(QString n, int a, QDateTime d = QDateTime::currentDateTime()) : name(n), age(a), date(d){}

    
    bool operator==(const Person &other) const {
        return name == other.name && age == other.age;
    }
};

uint qHash(const Person &p) {
//    return qHash(p.name) ^ qHash(p.age);
    return qHash(p.date.toString());
}


int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QHash<Person, QString> hash;
    hash.insert({ "Alice", 22 }, "Engineer");
    hash.insert({ "Bob", 18 }, "Student");
    hash.insert({ "Cathy", 28 }, "Manager");


    QHash<Person, QString>::const_iterator iter = hash.constBegin();
    for(; iter != hash.constEnd(); iter++)
    {
        qDebug() << iter.key().name << " : " << iter.value();
    }


    return app.exec();
}

主要步骤:

1:自定义数据结构:Person,这里有三个数据,name、age和date。date保证了数据添加到QHash的时间,这样就可以保证在哈希表中,数据是按照存放的先后顺序储存的。

2:实现自定义类型的哈希函数和比较函数(这是QHash存放自定义类型数据时必须要实现的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值