ما هي حاويات STL في C ++

Ma Hy Hawyat Stl Fy C



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

أنواع حاويات C ++ STL

في C ++ ، هناك ثلاثة أنواع من STL حاويات ، والتي تم سردها أدناه:







1: حاويات متسلسلة

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



  • المتجه: إنها مصفوفة ذات حجم ديناميكي يتم تخزينها في الذاكرة بطريقة متجاورة.
  • من ماذا: إنه يمثل قائمة انتظار ذات نهايات مزدوجة تدعم عمليات الإدراج والحذف.
  • مجموعة مصفوفة: إنها مجموعة ثابتة مخصصة أثناء التجميع مع الحفاظ على حجمها ثابتًا.
  • قائمة: إنها قائمة مرتبطة بشكل مزدوج تقوم بإدخال وحذف سريع للعناصر في أي مكان في القائمة.
  • القائمة الأمامية: إنها قائمة مرتبطة بشكل فردي مثل القائمة ولكن لا يمكنك اجتيازها إلا في اتجاه واحد.

مثال



في هذا المثال ، سوف نستخدم الامتداد فئة ناقلات لتوضيح كيف أ تسلسلي حاوية يعمل.





# تضمين
# تضمين <ناقل>
استخدام اسم للمحطة؛
انت مين ( ) {
// تهيئة متجه من int يكتب
المتجه < int > الأرقام = { 10 و 2 و 16 و 70 و 5 } ؛
// طباعة المتجه
كوت << 'الأرقام هي:' ؛
ل ( آلي & أنا: الأعداد )
{
كوت << أنا << '،' ؛
}
يعود 0 ؛
}

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



2: الحاويات الترابطية

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

ال ترابطي حاويات تصنف على النحو التالي:

  • خريطة: مجموعة من أزواج المفتاح والقيمة التي تم فرزها باستخدام مفاتيح فريدة
  • الخريطة المتعددة: مجموعة من أزواج المفتاح والقيمة التي تم فرزها باستخدام المفاتيح
  • تعيين: يتم تجميع المفاتيح الفريدة وترتيبها بواسطة المفاتيح.
  • مولتيست: مجموعة من المفاتيح التي تم فرزها باستخدام المفاتيح

مثال

لتوضيح كيف أن ملف ترابطي حاوية يعمل ، سوف نستخدم وضع الدرجة في هذا المثال.

# تضمين
# تضمين <ضبط>
استخدام اسم للمحطة؛
انت مين ( )
{
// تهيئة أ تعيين من int يكتب
تعيين < int > الأرقام = { 10 و 2 و 16 و 70 و 5 } ؛
// اطبع ملف تعيين
كوت << 'الأرقام هي:' ؛
ل ( آلي & أنا: الأعداد )
{
كوت << أنا << '،' ؛
}
يعود 0 ؛
}

يقوم الكود أعلاه بتهيئة مجموعة من الأعداد الصحيحة في C ++ ، وهو مثال على حاوية ترابطية. تضمن المجموعة أن يتم فرز العناصر بترتيب تصاعدي افتراضيًا. يقوم الرمز بعد ذلك بطباعة الأرقام في المجموعة باستخدام حلقة for.

3: الحاويات الترابطية غير المرتبة

في C ++ ، النقابي غير المرتب حاويات تُستخدم لتوفير الإصدارات غير المصنفة من ملف ترابطي حاوية . يتم تنفيذها داخليًا مثل هياكل بيانات جدول التجزئة. ال ترابطي حاويات تصنف على النحو التالي:

  • خريطة غير مرتبة: مجموعة من أزواج المفاتيح ذات القيمة التي تم تجزئتها باستخدام مفاتيح فريدة.
  • خريطة متعددة غير مرتبة: مجموعة أزواج المفتاح والقيمة التي تم تجزئتها باستخدام المفاتيح.
  • مجموعة غير مرتبة: مجموعة من المفاتيح الفريدة التي تم تجزئتها باستخدام المفاتيح.
  • مجموعة متعددة غير مرتبة: مجموعة من المفاتيح التي تم تجزئتها باستخدام المفاتيح.

مثال

من أجل توضيح كيف أن ملف النقابي غير المرتب حاوية يعمل ، سوف نستخدم مجموعة غير مرتبة فئة في هذا المثال.

# تضمين
# تضمين
استخدام اسم للمحطة؛
انت مين ( )
{
// تهيئة unordered_set من int يكتب
unordered_set < int > الأرقام = { 10 و 2 و 16 و 70 و 5 } ؛
// اطبع ملف تعيين
كوت << 'الأرقام هي:' ؛
ل ( آلي & أنا: الأعداد )
{
كوت << أنا << '،' ؛
}
يعود 0 ؛
}

خاتمة

STL C ++ حاوية هو كائن صاحب تخزين مجموعة الكائنات الأخرى. وهي تعمل بشكل مشابه لقوالب الفصل وتدعم عددًا كبيرًا من أنواع العناصر. في هذا البرنامج التعليمي ، ناقشنا الأنواع الأكثر استخدامًا من حاويات STL C ++ ، وهي الحاويات المتسلسلة ، الحاويات الترابطية إلى جانب حاويات ترابطية غير مرتبة .