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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top