我希望使用QMultiMap (从QMap派生)来存储密钥/值对。由于我可以多次拥有密钥,所以我更喜欢使用QMultiMap。
假设我将按给定的顺序插入以下对:
"C" -> 5
"A" -> 10
"B" -> 77
"B" -> 1
"X" -> 314159当迭代在映射上时(最好使用java风格的迭代器),我需要保持等键对的顺序。也就是说,在迭代时,"B" -> 77和"B" -> 1应该完全按照插入顺序出现。不同的键之间的顺序并不重要。
不幸的是,文档并没有说明这些细节。上面写着
对于QMap,项目总是按键排序
但它没有说明是否/如何排序相同的键。
QMap是否保留了具有相同密钥的对的插入顺序,还是可以以某种方式保留它?
发布于 2014-11-23 10:45:22
来自关于QMap::iterator的Qt文档:
与以任意顺序存储其项的QHash不同,QMap存储按键排序的项。共享相同密钥的项(因为它们是使用QMap::insertMulti()插入的,或者是由于unite())将连续出现,从最近的插入值到最近插入的值。
因此,QMap似乎保持了具有等键对的反向插入顺序。
发布于 2019-10-04 16:14:27
有一个重载QMap::insertMulti(const_iterator pos, const Key &key, const T &value),其中pos是一个“提示”,您可以传递constBegin()或constEnd(),也可以在集合中间传递要插入的迭代器。当您有重复的键时,这就是命令顺序的方法。
我认为幸运的是,人们通常能看到秩序被保留,就好像它是一堆.
https://stackoverflow.com/questions/27087564
复制相似问题