QMap 和 QMultiMap 中的项目顺序

Sil*_*cer 5 qt qmap qmultimap

我想使用QMultiMap(源自QMap)来存储键/值对。由于我可以多次使用密钥,因此我更愿意使用QMultiMap.

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

"C" -> 5
"A" -> 10
"B" -> 77
"B" -> 1
"X" -> 314159
Run Code Online (Sandbox Code Playgroud)

在迭代地图时(最好使用 java 风格的迭代器),我需要保留相等键对的顺序。即,"B" -> 77并且"B" -> 1在迭代时应该完全按照插入顺序出现。不同的键之间的顺序无关紧要。

不幸的是,文档并没有说明这个细节。它说

使用 QMap,项目总是按键排序

但它没有说明是否/如何对相等的键进行排序。

是否QMap保留对的插入顺序同键或可以以某种方式保存?

Nej*_*jat 6

从 Qt 文档关于QMap::iterator

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

因此,似乎QMap保持具有相同键的对的相反插入顺序。