Is it possible to loop a QHash by the insert order? The method below seem to loop the hash by some other factor:
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
EDIT:
I figured it was impossible with QHash but what should I use instead?
From QHash documentation,
QHash is unordered, so an iterator's sequence cannot be assumed to be predictable. If ordering by key is required, use a QMap
So it is not possible.
If you want ordering based on the keys, use QMap
instead..
Hope it helps..
Edit:
If you don't need Key
and Value
Logical mapping and just their values, you can use
QList<QPair<QString,QString>> pairs;
For e.g:
The first value can be obtained by
QString firstValue = pairs.at(0).first;
Similarly for the second value in the QPair,
QString secondValue = pairs.at(0).second;
And you can iterate over the QList
to retrieve the elements in the inserted order..
QHash
doesn't remember your insert order. It is designed for fast random access. The order you get with the iterator is arbitrary.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With