首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QMap和QMultiMap中的项目顺序

QMap和QMultiMap中的项目顺序
EN

Stack Overflow用户
提问于 2014-11-23 09:44:25
回答 2查看 11.1K关注 0票数 6

我希望使用QMultiMap (从QMap派生)来存储密钥/值对。由于我可以多次拥有密钥,所以我更喜欢使用QMultiMap

假设我将按给定的顺序插入以下对:

代码语言:javascript
复制
"C" -> 5
"A" -> 10
"B" -> 77
"B" -> 1
"X" -> 314159

当迭代在映射上时(最好使用java风格的迭代器),我需要保持等键对的顺序。也就是说,在迭代时,"B" -> 77"B" -> 1应该完全按照插入顺序出现。不同的键之间的顺序并不重要。

不幸的是,文档并没有说明这些细节。上面写着

对于QMap,项目总是按键排序

但它没有说明是否/如何排序相同的键。

QMap是否保留了具有相同密钥的对的插入顺序,还是可以以某种方式保留它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-23 10:45:22

来自关于QMap::iterator的Qt文档:

与以任意顺序存储其项的QHash不同,QMap存储按键排序的项。共享相同密钥的项(因为它们是使用QMap::insertMulti()插入的,或者是由于unite())将连续出现,从最近的插入值到最近插入的值。

因此,QMap似乎保持了具有等键对的反向插入顺序。

票数 6
EN

Stack Overflow用户

发布于 2019-10-04 16:14:27

有一个重载QMap::insertMulti(const_iterator pos, const Key &key, const T &value),其中pos是一个“提示”,您可以传递constBegin()constEnd(),也可以在集合中间传递要插入的迭代器。当您有重复的键时,这就是命令顺序的方法。

我认为幸运的是,人们通常能看到秩序被保留,就好像它是一堆.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27087564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档