#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存放自定义类型数据时必须要实现的)