سؤال
هل من الممكن حلقة 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 ،
QString secondValue = pairs.at(0).second;
ويمكنك التكرار عبر QList
لاسترداد العناصر بالترتيب المدرج..
نصائح أخرى
QHash
لا تتذكر طلب الإدراج الخاص بك. وهي مصممة للوصول العشوائي السريع. الطلب الذي تحصل عليه مع التكرار تعسفي.
اذا أنت فقط إدراج عناصر (بدون إزالة عناصر) في QHash
يمكنك استخدام صفيف/قائمة بالتوازي. إنه ليس حلاً أنيقًا جدًا ولكن ما تريده لا يمكن تحقيقه QHash
حاوية فقط.