سؤال

واكتشفت مؤخرا أن تنفيذ خريطة التجزئة في C ++ سوف يطلق unordered_map.

وعندما نظرت لماذا لأنها لم تكن مجرد استخدام hash_map، اكتشفت أن ما يبدو هناك قضايا التوافق مع تنفيذ hash_map أن unordered_map يقرر (للمزيد حول هذا الموضوع <لأ href = "https://en.wikipedia.org / ويكي / Unordered_associative_containers_ (C٪ 2B٪ 2B) "يختلط =" noreferrer "> هنا ).

وهذا صفحة ويكي لا تعطي المزيد من المعلومات لذلك أنا أتساءل عما اذا كان أي شخص يعرف بعض القضايا مع hash_map أن unordered_map يقرر.

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

المحلول

ولما كان هناك جدول تجزئة المعرفة في مكتبة القياسية C ++، فإن المنفذين مختلفة من المكتبات القياسية توفر غير القياسية جدول التجزئة في كثير من الأحيان اسمه hash_map. لأن هذه التطبيقات لم تكتب بعد معيار كان لديهم كل الاختلافات الطفيفة في الوظائف والأداء الضمانات.

C ++ 11 تمت إضافة تنفيذ جدول التجزئة ل وC ++ القياسية مكتبة القياسية. وتقرر استخدام اسم بديل لفئة لمنع التصادم مع هذه التطبيقات غير القياسية ومنع استخدام غير مقصود من فئة جديدة من قبل المطورين الذين hash_table في مدوناتها.

واسم بديل المختار هو unordered_map الذي هو في الحقيقة أكثر وصفي لأنه يلمح إلى واجهة خريطة الطبقة وطبيعة غير مرتبة من عناصرها.

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