質問

挿入順序でqhashをループすることは可能ですか?以下の方法は、他の要因によってハッシュをループするようです。

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

編集:

Qhashでは不可能だと思いましたが、代わりに何を使用すればよいですか?

役に立ちましたか?

解決

から qhash ドキュメンテーション、

Qhashは順序付けられていないので、 イテレーターのシーケンスは予測可能であると想定できません. 。キーによる注文が必要な場合は、aを使用します QMAP

だからそうです ありえない.

キーに基づいて注文したい場合は、使用してください QMap 代わりは..

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

編集:

もし、あんたが しないでください 必要 KeyValue 論理マッピングとその価値だけで、あなたは使用できます

QList<QPair<QString,QString>> pairs;

例:

最初の値は、によって取得できます

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

同様に、QPAIRの2番目の値については、

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

そして、あなたはを繰り返すことができます QList 挿入された順序で要素を取得します..

他のヒント

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

もし、あんたが それだけ に要素を挿入します(要素の削除なし) QHash 配列/リストを並行して使用できます。それは非常にエレガントな解決策ではありませんが、あなたが望むものを達成することはできません QHash コンテナのみ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top