LOOP QHASH por ordem de inserção
Pergunta
É possível fazer loop um qhash pela ordem de inserção? O método abaixo parece fazer loop o hash por algum outro fator:
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
EDITAR:
Achei que era impossível com Qhash, mas o que devo usar?
Solução
A partir de Qhash documentação,
Qhash não é ordenado, então A sequência de um iterador não pode ser considerada previsível. Se a ordem por chave for necessária, use um QMAP
Então é não é possivel.
Se você deseja fazer o pedido com base nas chaves, use QMap
em vez de..
Espero que ajude..
Editar:
Se você não precisar Key
e Value
Mapeamento lógico e apenas seus valores, você pode usar
QList<QPair<QString,QString>> pairs;
Para por exemplo:
O primeiro valor pode ser obtido por
QString firstValue = pairs.at(0).first;
Da mesma forma para o segundo valor no Qpair,
QString secondValue = pairs.at(0).second;
E você pode iterar sobre o QList
para recuperar os elementos na ordem inserida..
Outras dicas
QHash
Não se lembra do seu pedido de inserção. Ele foi projetado para acesso aleatório rápido. O pedido que você recebe com o iterador é arbitrário.
Se você só Insira elementos (sem remoção de elementos) no QHash
Você pode usar uma matriz/lista em paralelo. Não é uma solução muito elegante, mas o que você deseja não pode ser alcançado com QHash
Somente contêiner.