البحث std :: unordered_set بواسطة قيمة التجزئة والمسند
-
29-09-2019 - |
سؤال
كيف يمكنني البحث عن 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);
ولكني لست متأكدا.