是否可以通过插入顺序循环QHash?下面的方法似乎通过其他因素循环哈希:
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
修改
我认为QHash不可能,但我应该使用什么呢?
答案 0 :(得分:12)
来自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
以检索插入顺序中的元素 ..
答案 1 :(得分:1)
QHash
不记得您的插入订单。它专为快速随机访问而设计。使用迭代器获得的顺序是任意的。
答案 2 :(得分:0)
如果仅在QHash
中插入元素(无元素删除),则可以并行使用数组/列表。它不是一个非常优雅的解决方案,但只有QHash
容器才能实现您想要的。