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..