是否可以按插入顺序循环 QHash?下面的方法似乎通过其他一些因素循环散列:
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
编辑:
我认为使用 QHash 是不可能的,但我应该改用什么?
从QHash文档中,
QHash 是无序的,因此不能假定迭代器的序列是可预测的。如果需要按键排序,请使用QMap
所以这是不可能的。
如果您想根据键排序,请QMap
改用..
希望能帮助到你..
编辑:
如果您不需要Key
和Value
逻辑映射以及它们的值,您可以使用
QList<QPair<QString,QString>> pairs;
例如:
第一个值可以通过
QString firstValue = pairs.at(0).first;
同样对于 QPair 中的第二个值,
QString secondValue = pairs.at(0).second;
您可以遍历QList
以检索插入顺序中的元素..
QHash
不记得您的插入顺序。它专为快速随机访问而设计。您使用迭代器获得的顺序是任意的。
如果您只在其中插入元素(不删除元素),则QHash
可以并行使用数组/列表。QHash
这不是一个非常优雅的解决方案,但是仅使用容器无法实现您想要的。