按插入顺序循环QHash

时间:2010-08-04 10:09:00

标签: c++ qt qhash

是否可以通过插入顺序循环QHash?下面的方法似乎通过其他因素循环哈希:

QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

修改

我认为QHash不可能,但我应该使用什么呢?

3 个答案:

答案 0 :(得分:12)

来自QHash文档,

  

QHash是无序的,所以是一个迭代器   序列不能被认为是   可预测的即可。如果按键排序是   必填时,请使用QMap

所以不可能

如果您想根据密钥进行排序,请改用QMap ..

希望有所帮助......

编辑:

如果您需要KeyValue逻辑映射及其值,则可以使用

QList<QPair<QString,QString>> pairs;

例如:

第一个值可以通过

获得
QString firstValue = pairs.at(0).first;

同样,对于QPair中的第二个值,

QString secondValue = pairs.at(0).second;

您可以迭代QList 以检索插入顺序中的元素 ..

答案 1 :(得分:1)

QHash不记得您的插入订单。它专为快速随机访问而设计。使用迭代器获得的顺序是任意的。

答案 2 :(得分:0)

如果QHash中插入元素(无元素删除),则可以并行使用数组/列表。它不是一个非常优雅的解决方案,但只有QHash容器才能实现您想要的。