سؤال

هل من الممكن حلقة 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 حاوية فقط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top