我在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
如何更新现有的键值值?语法是什么?
答案 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),运算符将静默地将项插入到散列中。