gpt4 book ai didi

c++ - 重复项的 QMultiHash insert() 行为

转载 作者:行者123 更新时间:2023-11-30 04:16:35 27 4
gpt4 key购买 nike

我有一个 QMultiHash<Key, Value*> .我可能有不止一个 Value*Key所以我确实想存储每个 Value*对应于每个 Key ,但我不想在 key1 == key2 && value1 == value2 中存储完全相同的拷贝不止一次。

如果我调用 QMultiHash::insert( Key, Value* )Key/Value*已经在哈希中的对,它会添加第二个拷贝吗?换句话说,如果我调用 insert()多次使用相同的 Key/Value*配对,然后调用 QMultiHash::values( Key )我会得到相同的吗 Value*一次,或者我会得到一个列表 Value*发生的次数与我调用插入的次数相同吗?

最佳答案

没有。 QMultiHash ,根据定义,允许多个值与给定键相关联。那是 QMultiHash 的“Multi”部分。例如,

QMultiHash<int, int> multi;         //multi.size() = 0
multi.insert(5, 1); //multi.size() = 1
multi.insert(5, 2); //multi.size() = 2
QList<int> list(multi.values(5);) //list = {2, 1};

如果你想强制唯一键,你应该使用 QHash 将这个事实传达给其他程序员并检查 'QHash::contains(key)'插入之前。另请注意,广告顺序很重要!

类似地,QMultiHash 允许重复的键值对,而不仅仅是重复的键。例如,

QMultiHash<int, int> multi;         //multi.size() = 0
multi.insert(5, 2); //multi.size() = 1
multi.insert(5, 2); //multi.size() = 2
QList<int> list(multi.values(5);) //list = {2, 2};

如果您希望允许多个值与单个键同时使用唯一的键值对,则必须在插入前使用 QMultiHash::contains(key, value) 手动检查唯一的键值对。 .

这两个事实都是 Qt 中的预期功能,给程序员带来了强制执行唯一性的负担,而不是在每次插入时都进行检查来降低性能。这是 C++ 程序员对设计良好的类的期望。

关于c++ - 重复项的 QMultiHash insert() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17683782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com