如何更新特定密钥的QHash值?

时间:2013-10-24 19:00:23

标签: c++ qt qtcore qhash

我在C ++中使用QHash来存储一些简单的键和值对。在我的例子中,键是一个整数,值也是。要向哈希添加新的键/值对,这是我的语法:

QHash<int, int> myhash;
int key = 5;
int value = 87;

myhash.insert(key,value);

qDebug() << "key 5 value = " << myhash.value(5);   // outputs 87

如何更新现有的键值值?语法是什么?

2 个答案:

答案 0 :(得分:8)

  T&amp; T&amp; QHash :: operator [](const Key&amp; key)   返回与键关联的值作为可修改的引用。

您可以执行以下操作:

myhash[5] = 88;

根据文档,如果密钥不存在,则构造并返回默认值。这意味着根据您可能需要考虑的方案,首先要确保密钥实际存在(例如,如果您在for / foreach循环中迭代密钥并使用检索到的密钥调用[]运算符,您将避免此问题)或检查检索到的值以及它是否是默认值。

答案 1 :(得分:2)

来自docs:如果使用QHash中已存在的键调用insert(),则会删除之前的值。例如:

hash.insert("plenty", 100);
hash.insert("plenty", 2000);
// hash.value("plenty") == 2000

在这种情况下,Operator []也可以工作。但在其他一些情况下要注意。来自docs: 通常,我们建议您使用contains()和value()而不是运算符来查找哈希中的键。原因是如果没有具有相同键的项(除非散列是const),运算符将静默地将项插入到散列中。