خريطة غير مرتبة (الإنجليزية: "رسم الخرائط غير مرتبة") هي حاوية متوفرة في مكتبة سي standard القياسية التي تسمح لك بتخزين البيانات في أزواج ذات قيمة رئيسية. على عكس الخريطة العادية ، لا تضمن الخريطة غير المرتبة ترتيب العناصر حسب المفتاح ، ولكنها تخزنها داخل حاوية في جدول تجزئة منظم بشكل خاص.
الميزة الرئيسية للعمل مع خريطة غير مرتبة هي الوصول السريع إلى العناصر عن طريق المفتاح. نظرا لاستخدام وظيفة التجزئة ، فإن وقت البحث عن عنصر في خريطة غير مرتبة حسب المفتاح ثابت س (1) ، مما يجعل هذه الحاوية ملائمة لحل المشكلات بكمية كبيرة من البيانات.
على سبيل المثال ، في لعبة تم تنفيذها في ج++ ، يمكن استخدام خريطة غير مرتبة لتخزين معلومات حول الشخصيات وخصائصها والمخزون. باستخدام سطر واحد من التعليمات البرمجية ، يمكنك الوصول إلى الحرف المطلوب أو التحقق من وجود عنصر معين في مخزونه.
- كيف تعمل الخريطة غير المرتبة
- مبادئ التشغيل والميزات
- باستخدام خريطة غير مرتبة في ج C
- مزايا الخريطة غير المرتبة على الحاويات الأخرى
- قيود وميزات استخدام الخريطة غير المرتبة
- سؤال وجواب
- لماذا استخدام خريطة غير مرتبة إذا كان هناك خريطة العادية?
- كيف يمكنني إضافة عنصر إلى خريطة غير مرتبة?
- كيف يمكنني معرفة عدد العناصر في خريطة غير مرتبة?
- كيف يمكنني إزالة عنصر من خريطة غير مرتبة?
كيف تعمل الخريطة غير المرتبة
الخريطة غير المرتبة هي واحدة من تطبيقات الحاوية الترابطية في مكتبة سي standard القياسية. هذه الحاوية عبارة عن جدول تجزئة يسمح لك بتخزين قيم فريدة مع المفاتيح المرتبطة بها.
على عكس الخريطة المرتبة ، لا تدعم الخريطة غير المرتبة ترتيب العناصر حسب المفتاح. يتم تحقيق ذلك باستخدام وظائف التجزئة لتحديد "الخلية" في جدول التجزئة حيث سيتم وضع كل عنصر.
يمكن تقسيم عملية العمل مع خريطة غير مرتبة إلى عدة خطوات:
- تجزئة المفتاح: عند إضافة عنصر جديد إلى خريطة غير مرتبة ، يتم استدعاء دالة تجزئة لمفتاح العنصر ، والذي يحول المفتاح إلى فهرس فريد.
- تعريف خلية جدول التجزئة: يتم استخدام الفهرس المحسوب باستخدام دالة التجزئة لتحديد خلية جدول التجزئة حيث سيتم وضع العنصر.
- الخلية التي تم العثور عليها فارغة: إذا كانت الخلية فارغة ، فسيتم وضع زوج من قيمة المفتاح فيها وتكتمل عملية إضافة عنصر.
- الخلية التي تم العثور عليها مشغولة: إذا كانت الخلية مشغولة بالفعل ، فهناك تصادم. في هذه الحالة ، تحدث خوارزمية معينة لحل التصادم ، على سبيل المثال ، فتح العنونة أو السلاسل.
- البحث عن قيمة حسب المفتاح: عند البحث عن قيمة حسب المفتاح ، يتم أيضا استدعاء دالة التجزئة ، يتم استخدام رمز التجزئة المحسوب للعثور على الخلية المقابلة في جدول التجزئة ، حيث يتم تخزين القيمة.
نظرا لأن الخريطة غير المرتبة تستند إلى جدول تجزئة ، فإن وقت الوصول إلى عناصر هذه الحاوية يكون ثابتا تقريبا س(1) ، مما يجعلها فعالة جدا للعمل مع كميات كبيرة من البيانات.
ومع ذلك ، عند استخدام خريطة غير مرتبة ، يجب ألا يغيب عن البال أن ترتيب العناصر في الحاوية سيكون غير مؤكد. هذا يعني أنه عند التكرار على الخريطة غير المرتبة ، سيتم إرجاع العناصر بترتيب عشوائي.
مبادئ التشغيل والميزات
الخريطة غير المرتبة هي حاوية في ج library المكتبة القياسية التي توفر مصفوفة ارتباطية مع عمليات سريعة لإدراج العناصر وحذفها والبحث عنها. المبادئ الأساسية للخريطة غير مرتبة هي:
- التجزئة: تستخدم الخريطة غير المرتبة دالة تجزئة لتحويل مفتاح عنصر إلى فهرس الدلو الذي سيتم تخزين هذا العنصر فيه. توزع وظيفة التجزئة الجيدة العناصر بالتساوي عبر الدلاء ، مما يوفر وصولا سريعا إلى العناصر ويقلل من الاصطدامات.
- عدم وجود النظام: لا يتم تخزين العناصر الموجودة في الخريطة غير المرتبة بأي ترتيب. يمكن أن يكون ترتيب تسلسلها عشوائيا ويعتمد على قيم دالة التجزئة واستراتيجية حل التصادم المستخدمة.
- مفاتيح فريدة: يجب أن يكون كل مفتاح في خريطة غير مرتبة فريدا. إذا حاولت إدراج عنصر بمفتاح موجود ، فستقوم القيمة الجديدة بالكتابة فوق العنصر القديم.
- البحث السريع عن العناصر: يتم إجراء البحث عن العناصر في الخريطة غير المرتبة في وقت ثابت س (1) ، لأن العملية تعتمد على تحويل المفتاح إلى قيمة تجزئة والبحث عن عنصر في المجموعة باستخدام قيمة التجزئة هذه. وهذا يجعل الخريطة غير مرتبة فعالة للغاية لعمليات البحث والوصول إلى البيانات.
- إدراج العناصر وحذفها: يتم أيضا إدخال العناصر وحذفها في وقت ثابت س(1). تتم العمليات في دلو واحد ، مما يجعلها سريعة جدا.
| ميزة | الوصف |
|---|---|
| الترابطية | توفر الخريطة غير المرتبة مصفوفة ارتباطية حيث يحتوي كل عنصر على مفتاح وقيمة. يتيح لك ذلك العثور بسرعة على القيم واستخراجها حسب المفتاح. |
| تغيير الحجم الديناميكي | تقوم الخريطة غير المرتبة بتغيير حجمها تلقائيا إذا لزم الأمر. عندما يتجاوز عدد العناصر سعة الدلاء ، يزداد حجم الخريطة غير المرتبة لضمان استخدام الذاكرة بكفاءة وأداء. |
| كفاءة العمليات | توفر الخريطة غير المرتبة أداء عاليا في عمليات إدراج العناصر وحذفها والبحث عنها. |
بشكل عام ، خريطة غير مرتبة هي أداة قوية وفعالة للعمل مع المصفوفات الترابطية. يوفر وصولا سريعا إلى العناصر وتغيير الحجم الديناميكي وعمليات الإدراج والحذف الفعالة. من المهم اختيار وظيفة تجزئة جيدة وضبط عتبات السعة والأداء بشكل صحيح للاستخدام الأمثل للخريطة غير المرتبة في برنامجك.
باستخدام خريطة غير مرتبة في ج C
خريطة غير مرتبة في ج is هو تنفيذ حاوية النقابي الذي يسمح لك لتخزين أزواج قيمة المفتاح. ميزة خاصة للخريطة غير المرتبة هي أنها لا تضمن ترتيب العناصر ، ولكنها توفر وصولا سريعا إلى العناصر من خلال استخدام وظيفة التجزئة.
لاستخدام الخريطة غير المرتبة ، تحتاج إلى توصيل ملف الرأس. ثم يمكنك إنشاء كائن خريطة غير مرتبة عن طريق تحديد أنواع المفاتيح والقيم. على سبيل المثال:
# تشمل كثافة العمليات الرئيسية () {
الأمراض المنقولة جنسيا::خريطة غير مرتبة;
// ...
العودة 0;
}
لإضافة عناصر إلى خريطة غير مرتبة ، يمكنك استخدام طريقة الإدراج. على سبيل المثال:
خريطتي.تدرج ({"تفاحة" ، 5});
خريطتي.تدرج ({"موزة" ، 7});
خريطتي.يدرج ({"برتقالي" ، 3});
للحصول على قيمة المفتاح ، يمكنك استخدام عامل الفهرس []. على سبيل المثال:
قيمة كثافة العمليات = خريطة ["تفاحة"];
إذا لم يتم العثور على عنصر يحتوي على المفتاح المحدد ، فسيتم إنشاء عنصر جديد بالقيمة الافتراضية للنوع المحدد. لذلك ، قبل استخدام عامل الفهرس ، يجدر التحقق من وجود عنصر باستخدام طريقة العد. على سبيل المثال:
إذا (خريطة.العد ("تفاحة") > 0) {
قيمة كثافة العمليات = خريطة ["تفاحة"];
}
أيضا ، لحذف عنصر من خريطة غير مرتبة ، يمكنك استخدام طريقة المسح وتمرير مفتاح العنصر إليه. على سبيل المثال:
خريطتي.محو ("تفاحة");
يمكنك استخدام لكل حلقة لاجتياز جميع عناصر خريطة غير مرتبة. على سبيل المثال:
ل (كونست السيارات والزوج : ميماب) {
الأمراض المنقولة جنسيا:: كوت << زوج.أولا<<": "< < زوج.ثانيا < < الأمراض المنقولة جنسيا:: إندل;
}
وبالتالي ، فإن استخدام خريطة غير مرتبة في ج allows يسمح لك بالعمل بفعالية مع الحاويات الترابطية ، مع الحفاظ على الوصول السريع إلى العناصر وعدم ضمان ترتيبها.
مزايا الخريطة غير المرتبة على الحاويات الأخرى
حاوية الخريطة غير مرتبة من مكتبة سي standard القياسية عبارة عن مصفوفة ارتباطية تستند إلى جدول تجزئة. على عكس الحاويات الأخرى مثل الخريطة والمجموعة ، فإن الخريطة غير المرتبة لها عدد من المزايا.
- الوصول السريع إلى العناصر: نظرا لاستخدام جدول التجزئة ، يكون وقت الوصول إلى عنصر في خريطة غير مرتبة ثابتا ، أي س (1). يتيح لك ذلك استرداد القيم المرتبطة بمفاتيح معينة وتغييرها بكفاءة.
- الإدراج السريع والحذف: يتم تنفيذ الإدراج وحذف العناصر أيضا في ثابت س (1) الوقت ، وذلك بفضل جدول التجزئة الأمثل. هذا مفيد بشكل خاص عند العمل مع كميات كبيرة من البيانات.
- تفرد المفتاح: يجب أن يكون كل مفتاح في خريطة غير مرتبة فريدا. إذا قمت بإدراج عنصر بمفتاح موجود بالفعل ، فسيتم استبدال القيمة. هذا يضمن عدم وجود نسخ مكررة في الحاوية.
- المرونة: تدعم الخريطة غير المرتبة أي نوع من البيانات كمفاتيح وقيم ، بشرط أن يتم تجزئتها وأن يكون لها عامل مقارنة محدد. هذا يجعل الحاوية مريحة ومتعددة الاستخدامات للاستخدام في سيناريوهات مختلفة.
على الرغم من مزاياها ، تحتوي الخريطة غير المرتبة أيضا على بعض الميزات التي يجب أن تكون على دراية بها عند العمل معها. على سبيل المثال ، ترتيب العناصر في خريطة غير مرتبة غير مضمون وقد يتغير أثناء تشغيل البرنامج. أيضا ، يمكن أن يستهلك جدول التجزئة ذاكرة أكبر ويكون له تنفيذ أكثر تعقيدا مقارنة بالحاويات الأخرى.
قيود وميزات استخدام الخريطة غير المرتبة
توفر فئة الخرائط غير المرتبة من مكتبة سي standard القياسية طريقة فعالة لتخزين وإدارة مجموعة من أزواج القيمة الرئيسية. ومع ذلك ، عند استخدام هذه الفئة ، من الضروري مراعاة بعض القيود والميزات.
- لا يوجد ضمان لترتيب العناصر. على عكس فئة الخريطة ، فإن العناصر في خريطة غير مرتبة غير مرتبة ويمكن أن تكون بأي ترتيب. إذا كان ترتيب العناصر مهما ، فيجب استخدام حاويات أخرى.
- فقدان موقع التكرار. يمكن أن يؤدي إدراج العناصر وحذفها في خريطة غير مرتبة إلى فقدان مواقع التكرار ، مما قد يؤدي إلى سلوك برنامج غير متوقع. إذا لزم الأمر ، قم بالوصول إلى العناصر بواسطة التكرارات ، يجب أن تكون حذرا وتحقق مرة أخرى من صلاحيتها بعد تغيير الحاوية.
- عدم وجود دعم لعمليات المقارنة والفرز بشكل افتراضي. نظرا لأن العناصر في خريطة غير مرتبة غير مرتبة ، فلا يمكنك مقارنتها مباشرة أو فرزها. إذا كنت بحاجة إلى مقارنة العناصر أو فرزها ، فيجب عليك استخدام طرق أو حاويات مناسبة أخرى.
- إمكانية الصراعات وظيفة التجزئة. عند استخدام وظائف التجزئة في خريطة غير مرتبة ، قد ينشأ موقف عندما يكون للمفاتيح المختلفة نفس قيمة التجزئة. في مثل هذه الحالات ، يكون فقدان البيانات أو تدهور الأداء ممكنا. لتجنب التعارضات ، يجب اختيار وظائف التجزئة التي توزع المفاتيح بالتساوي.
على الرغم من هذه القيود والميزات ، فإن فئة خريطة غير مرتبة هي أداة قوية ومريحة للعمل مع مجموعة من أزواج القيمة الرئيسية. يوفر عمليات بحث وإدراج وحذف فعالة من حيث الوقت ، بالإضافة إلى توفير وظائف شاملة للعمل مع البيانات.
سؤال وجواب
لماذا استخدام خريطة غير مرتبة إذا كان هناك خريطة العادية?
والميزة الرئيسية لخريطة غير مرتبة هي سرعة عملها. على عكس الخريطة العادية ، لا تدعم الخريطة غير المرتبة ترتيب العناصر ، مما يسمح لك بإجراء عمليات إضافة العناصر والبحث عنها وحذفها بشكل أسرع.
كيف يمكنني إضافة عنصر إلى خريطة غير مرتبة?
لإضافة عنصر إلى خريطة غير مرتبة ، استخدم طريقة الإدراج أو عامل التشغيل [] وتمرير مفتاح وقيمة العنصر. على سبيل المثال: خريطة غير مرتبة; خريطتي.إدراج (جعل_زوج (1 ، "تفاحة"));
كيف يمكنني معرفة عدد العناصر في خريطة غير مرتبة?
لمعرفة عدد العناصر في خريطة غير مرتبة ، يمكنك استخدام طريقة الحجم (). على سبيل المثال: خريطة خريطة غير مرتبة ؛ عدد كثافة العمليات = خريطة.الحجم();
كيف يمكنني إزالة عنصر من خريطة غير مرتبة?
لإزالة عنصر من خريطة غير مرتبة ، يمكنك استخدام طريقة المسح () وتمريرها مفتاح العنصر المراد حذفه. على سبيل المثال: خريطة غير مرتبة.محو (1);