Loop Qhash per inserire l'ordine
Domanda
È possibile eseguire il loop di un qhash con l'ordine di inserto? Il metodo seguente sembra eseguire il ciclo dell'hash di qualche altro fattore:
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
MODIFICARE:
Ho pensato che fosse impossibile con Qhash ma cosa dovrei usare invece?
Soluzione
Da Qhash documentazione,
Qhash non è ordinato, quindi La sequenza di un iteratore non può essere considerata prevedibile. Se è necessario ordinare per chiave, utilizzare a Qmap
Così è non possibile.
Se si desidera ordinare in base alle chiavi, usa QMap
invece..
Spero che sia d'aiuto..
Modificare:
Se tu non bisogno Key
e Value
Mappatura logica e solo i loro valori, puoi usare
QList<QPair<QString,QString>> pairs;
Per EG:
Il primo valore può essere ottenuto da
QString firstValue = pairs.at(0).first;
Allo stesso modo per il secondo valore nella qpair,
QString secondValue = pairs.at(0).second;
E puoi iterare sul QList
per recuperare gli elementi nell'ordine inserito..
Altri suggerimenti
QHash
Non ricorda il tuo ordine di inserimento. È progettato per un rapido accesso casuale. L'ordine che ricevi con l'iteratore è arbitrario.
Se tu solo inserire elementi (nessuna rimozione di elementi) in QHash
È possibile utilizzare un array/elenco in parallelo. Non è una soluzione molto elegante, ma ciò che vuoi non può essere raggiunto QHash
Solo contenitore.