Pregunta

¿Es posible recorrer un Qhash por orden de inserción? El siguiente método parece enrollar el hash por algún otro factor:

QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

EDITAR:

Pensé que era imposible con Qhash, pero ¿qué debo usar en su lugar?

¿Fue útil?

Solución

De Qhash documentación,

Qhash no está ordenado, así que No se puede suponer que la secuencia de un iterador sea predecible. Si se requiere ordenar por clave, use un QMAP

Así es imposible.

Si desea ordenar en función de las teclas, use QMap en cambio..

Espero eso ayude..

Editar:

Si usted no necesitar Key y Value Mapeo lógico y solo sus valores, puede usar

QList<QPair<QString,QString>> pairs;

Para EG:

El primer valor se puede obtener por

QString firstValue = pairs.at(0).first;

Del mismo modo para el segundo valor en el QPair,

QString secondValue = pairs.at(0).second;

Y puedes iterar sobre el QList Para recuperar los elementos en el orden insertado..

Otros consejos

QHash No recuerda su orden de inserción. Está diseñado para un acceso aleatorio rápido. El pedido que recibe con el iterador es arbitrario.

Si usted solamente insertar elementos (sin eliminación de elementos) en el QHash Puede usar una matriz/lista en paralelo. No es una solución muy elegante, pero lo que quieres no se puede lograr con QHash solo contenedor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top