QHash是Qt提供的一个模板类,它可以实现一个基于哈希表的字典。哈希表是一种非常高效的数据结构,它可以在常数时间内完成插入、查找、删除等操作。¹
要使用QHash,你需要包含<QHash>头文件,并指定键和值的类型。比如,如果想用QString作为键,int作为值,可以这样定义一个QHash对象:
QHash<QString, int> qhash;
要往QHash中插入一个键值对,可以使用[]运算符或者insert()函数。比如:
qhash["Alice"] = 20; // 使用[]运算符
qhash.insert("Bob", 25); // 使用insert()函数
要从QHash中获取一个键对应的值,可以使用value()函数或者[]运算符。比如:
int age1 = qhash.value("Alice"); // 使用value()函数
int age2 = qhash["Bob"]; // 使用[]运算符
要判断QHash中是否包含某个键,可以使用contains()函数。比如:
bool hasAlice = qhash.contains("Alice"); // 返回true
bool hasCindy = qhash.contains("Cindy"); // 返回false
要遍历QHash中存储的所有键值对,可以使用迭代器或者范围for循环。比如:
// 使用迭代器
QHash<QString, int>::const_iterator it = qhash.constBegin();
while (it != qhash.constEnd()) {
qDebug() << it.key() << ":" << it.value();
++it;
}
// 使用范围for循环
for (auto it = qhash.begin(); it != qhash.end(); ++it) {
qDebug() << it.key() << ":" << it.value();
}
要从QHash中删除某个键值对,你可以使用erase()函数或者remove()函数。比如:
// 使用erase()函数,参数是迭代器
auto it = qhash.find("Alice");
if (it != qhash.end()) {
qhash.erase(it);
}
// 使用remove()函数,参数是键
qhash.remove("Bob");