سؤال

مصفوفة Perl هي نوع بيانات مجردة.ما هي الآلية الداخلية لمجموعة بيرل؟هل يتم تنفيذه باستخدام مجموعة ديناميكية أو قائمة مرتبطة؟نظرًا لأن عناصر المصفوفة تتمتع بوصول عشوائي، فسأفترض أن المصفوفة الديناميكية من المؤشرات، أو الإشارات إلى الكميات المنطقية منطقية.ومع ذلك، مع عمليتي الإزاحة والإلغاء في رأس المصفوفة، هل سيتعين على المصفوفة نقل جميع عناصرها بهذه العمليات؟يبدو غير فعال بالنسبة لي.أي فكرة؟

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

المحلول

الق نظرة على هذا: http://www.perlmonks.org/?node_id=17890

(مأخوذ من هناك :)

ينفذ Perl قوائم تحتوي على مصفوفة وإزاحات العنصر الأول/الأخير.يتم تخصيص المصفوفة بشكل أكبر من المطلوب، حيث تشير الإزاحات في الأصل إلى منتصف المصفوفة بحيث يكون هناك مجال للنمو في كلا الاتجاهين (إلغاء الإزاحات والدفع/الإدراج) قبل أن تكون إعادة تخصيص المصفوفة الأساسية ضرورية.نتيجة هذا التنفيذ هي أن جميع مشغلي القائمة البدائية لـ Perl (الإدراج، الجلب، تحديد حجم المصفوفة، الدفع، البوب، الإزاحة، إلغاء الإزاحة، وما إلى ذلك) يعملون في زمن O(1).

نصائح أخرى

تم توثيق الأنواع في perlguts (نرى بيرل الداخلية بالنسبة للوثائق ذات الصلة) - وهي AV للصفائف و HV للتجزئة.

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