سؤال

أحتاج النقابي حاوية أن يجعلني مؤشر كائن معين من خلال سلسلة ، ولكن أيضا يحافظ على النظام من الإدراج حتى أستطيع البحث عن كائن معين باسمه أو مجرد تكرار و استرداد الكائنات في نفس الترتيب اضفت لهم.

أعتقد أن هذا الهجين من قائمة مرتبطة و تجزئة الخريطة ينبغي القيام بهذه المهمة ، ولكن قبل حاولت استخدام std::tr1::unordered_map ويعتقد أنه كان يعمل في هكذا وصفت, ولكن ذلك لم يكن.لذلك يمكن للشخص أن يفسر لي معنى السلوك unordered_map?


@wesc:أنا متأكد من الأمراض المنقولة جنسيا::خريطة ينفذ من قبل المحكمة الخاصة بلبنان ، في حين أنا متأكد std::hash_map ليست في المحكمة الخاصة بلبنان (أعتقد نسخة قديمة من Visual Studio وضعها في مساحة يسمى stdext).

@cristopher:لذا ، إذا كنت الحق في الحصول عليها, الفرق هو في تنفيذ (وبالتالي العروض) وليس في الطريقة التي يتصرف خارجيا.

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

المحلول

دفعة وثائق غير مرتبة الحاويات

الفرق هو في طريقة كيف يمكنك توليد البحث.

في خريطة/مجموعة حاويات operator< يستخدم لتوليد أمر شجرة.

في مرتبة الحاويات ، operator( key ) => index يتم استخدامه.

انظر التجزئة للحصول على وصف كيف يعمل.

نصائح أخرى

كنت قد طلبت الكنسي السبب دفعة::MultiIndex تم:قائمة الإدراج النظام مع سرعة البحث عن طريق المفتاح. دفعة MultiIndex التعليمي:قائمة سريعة البحث

تحتاج إلى مؤشر النقابي حاوية طريقتين:

  • إدراج النظام
  • سلسلة المقارنة

محاولة دفعة.MultiIndex أو دفعة.تدخلي.أنا لم تستخدم هذه الطريقة ولكن اعتقد انها ممكن.

آسف قرأت تعليقك الأخير على خطأ.نعم hash_map ليست في المحكمة الخاصة بلبنان ، الخريطة.ولكن unordered_map و hash_map هي نفسها من ما كنت أقرأ.

خريطة -> log (n) الإدراج, استرجاع, التكرار كفاءة (أمرت الرئيسية مقارنة)

hash_map/unordered_map -> وقت ثابت الإدراج استرجاع التكرار الوقت لا يضمن أن تكون فعالة

لم يكن أي من هذه سوف تعمل من أجلك من قبل أنفسهم ، لأن أوامر خريطة الأشياء استنادا إلى المحتوى الرئيسي, وعدم إدراج تسلسل (إلا إذا كان المفتاح الخاص بك يحتوي على معلومات عن إدراج تسلسل في ذلك).

عليك أن تفعل أي ما وصفته أنت (القائمة + hash_map) ، أو إنشاء مفتاح من النوع الذي يحتوي على إدراج تسلسل عدد زائد مناسب وظيفة مقارنة.

أنا أعتقد أن unordered_map و hash_map هي أكثر أو أقل نفس الشيء.الفرق هو أن المحكمة لا رسميا لها hash_map (ما كنت تستخدم على الأرجح مترجم محددة الشيء) ، لذلك unordered_map هو إصلاح هذا الإغفال.

unordered_map هو فقط...غير مرتبة.لا يمكنك أن تعتمد على الحفاظ على أي طلب على التكرار.

كنت متأكدا من أن الأمراض المنقولة جنسيا::hash_map موجود في كل المحكمة الخاصة بلبنان تطبيقات?SGI المحكمة بتنفيذ ذلك جنو g++ لا يملك ذلك (إنه يقع في __غنو_cxx مساحة) اعتبارا من 4.3.1 على أي حال.بقدر ما أعرف, hash_map دائما غير القياسية ، والآن tr1 هو إصلاح ذلك.

@wesc:المحكمة الخاصة بلبنان قد std::خريطة...فما هو الفرق مع unordered_map?لا أعتقد أن المحكمة سوف تنفذ مرتين نفس الشيء و يطلق عليه بشكل مختلف.

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