- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我想知道保存 QMultihash 的最佳方法是什么? .我正在考虑将其保存为 INI 文件,使用 QSettings ,但是有没有更好的方法来做到这一点,让它也很容易加载?可能是序列化? 顺便说一句
我有一个 QMultiHash .我可能有不止一个 Value*每Key所以我确实想存储每个 Value*对应于每个 Key ,但我不想在 key1 == key2 && value1 == valu
我需要遍历 QMultiHash 并检查与每个键对应的值列表。我需要使用可变迭代器,这样我就可以从哈希中删除符合特定条件的项目。 The documentation没有解释如何访问所有的值,只是第一个
我是一名优秀的程序员,十分优秀!