5

挿入順序で QHash をループすることは可能ですか? 以下のメソッドは、他の要因によってハッシュをループしているようです:

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

編集:

QHash では無理だと思いましたが、代わりに何を使用すればよいでしょうか?

4

3 に答える 3

13

QHashのドキュメントから、

QHash は順序付けされていないため、反復子のシーケンスが予測可能であると想定することはできません。キーによる順序付けが必要な場合は、QMapを使用します

だから、それは不可能です。

キーに基づいて順序付けする場合は、QMap代わりに..

それが役に立てば幸い..

編集:

論理マッピングとその値だけが必要ない場合は、使用できますKeyValue

QList<QPair<QString,QString>> pairs;

例:

最初の値は次のように取得できます。

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

同様に、QPair の 2 番目の値についても、

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

そして、 を繰り返し処理してQList 、挿入された順序で要素を取得できます..

于 2010-08-04T12:13:18.703 に答える
1

QHash挿入順序を覚えていません。高速ランダム アクセス用に設計されています。イテレータで取得する順序は任意です。

于 2010-08-04T11:26:30.500 に答える
0

要素を挿入するだけ(要素を削除しない) のQHash場合は、配列/リストを並行して使用できます。QHashこれは非常にエレガントなソリューションではありませんが、コンテナーだけでは目的を達成できません。

于 2010-08-04T11:34:03.667 に答える