挿入順序で QHash をループすることは可能ですか? 以下のメソッドは、他の要因によってハッシュをループしているようです:
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
編集:
QHash では無理だと思いましたが、代わりに何を使用すればよいでしょうか?
QHashのドキュメントから、
QHash は順序付けされていないため、反復子のシーケンスが予測可能であると想定することはできません。キーによる順序付けが必要な場合は、QMapを使用します
だから、それは不可能です。
キーに基づいて順序付けする場合は、QMap
代わりに..
それが役に立てば幸い..
編集:
論理マッピングとその値だけが必要ない場合は、使用できますKey
Value
QList<QPair<QString,QString>> pairs;
例:
最初の値は次のように取得できます。
QString firstValue = pairs.at(0).first;
同様に、QPair の 2 番目の値についても、
QString secondValue = pairs.at(0).second;
そして、 を繰り返し処理してQList
、挿入された順序で要素を取得できます..
QHash
挿入順序を覚えていません。高速ランダム アクセス用に設計されています。イテレータで取得する順序は任意です。
要素を挿入するだけ(要素を削除しない) のQHash
場合は、配列/リストを並行して使用できます。QHash
これは非常にエレガントなソリューションではありませんが、コンテナーだけでは目的を達成できません。