5

是否可以按插入顺序循环 QHash?下面的方法似乎通过其他一些因素循环散列:

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

编辑:

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

4

3 回答 3

13

QHash文档中,

QHash 是无序的,因此不能假定迭代器的序列是可预测的。如果需要按键排序,请使用QMap

所以这是不可能的

如果您想根据键排序,请QMap改用..

希望能帮助到你..

编辑:

如果您不需要KeyValue逻辑映射以及它们的值,您可以使用

QList<QPair<QString,QString>> pairs;

例如:

第一个值可以通过

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

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

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

您可以遍历QList 以检索插入顺序中的元素..

于 2010-08-04T12:13:18.703 回答
1

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

于 2010-08-04T11:26:30.500 回答
0

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

于 2010-08-04T11:34:03.667 回答