سؤال

كيف يمكنني البحث عن std :: unordered_set معرفة قيمة التجزئة ووجود بعض الكائنات الأصلية؟ (المسند تحديد معادلة pred(x) && pred(y) المعنى x == y.)

هل كانت مفيدة؟

المحلول

حسنًا ، يمكنك تجاهل قيمة التجزئة وتكرارها بالكامل unsorted_set اختبار المسند. ليست الكفاءة المثالية ، نظرًا لأنك تفضل تكرار دلو واحد فقط ، ولكنها تفعل ما تطلبه.

اساسي unordered_set لديه واجهة begin(size_t) للحصول على مكرر لدلو معين (حسب الرقم) ، وواجهة bucket_count() للحصول على عدد الدلاء.

يتم ضمان كائنات ذات تجزئة معينة للجميع في نفس الدلو ، لذا فإن تكرار أن اختبار الدلو المسند يكفي لما تريد القيام به.

لا يمكنني في الواقع رؤية أي شيء في المعيار لضمان الدلو الصحيح للتكرار hash_value % bucket_count(). هناك وظيفة للحصول على الدلو في المقدمة هدف, ، ولكن ليس للحصول على الدلو في المقدمة قيمة التجزئة. جربه على تطبيقك ، على الرغم من: أعتقد أنه تخمين معقول ، وربما فشلت في العثور على القيود الحاسمة في المعيار.

باختصار ، أعتقد أنك تريد شيئًا مثل:

size_t bucket = hash_value % myset.bucket_count();
find_if(myset.begin(bucket), myset.end(bucket), pred);

ولكني لست متأكدا.

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