كيفية التكرار على الخريطة في C ++

How Iterate Over Map C



في هذا البرنامج التعليمي السريع ، سنرى كيفية التكرار في الخريطة في C ++.

هناك عدة طرق للتكرار عبر الخريطة في C ++. مع الإصدارات الأحدث من C ++ ، هناك طرق أكثر تقدمًا للتكرار عبر الخريطة في C ++.







فلنستعرض كل واحد تلو الآخر.



استخدام for loop مع stp :: map

لقد أنشأنا خريطة باسم countryCapitalMap وأدرجت أزواج القيمة الرئيسية فيه.



<ل>
#يشمل
#يشمل
#يشمل
#يشمل
#يشمل
استخدام مساحة الاسمساعات؛
intالأساسية() {
// تهيئة الخريطة
خريطة>'الهند'ودلهي))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('نيبال'وكاتماندو))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('الصين'و'بكين'))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('فرنسا'و'باريس'))؛

// كرر استخدام مكرر في حلقة for
ل (تلقاءيitr=countryCapitalMap.يبدأ()؛itr!=countryCapitalMap.نهاية()؛itr++)
{
ساعات::كلفة <<itr->أول// مفتاح الوصول
<< ':'
<<itr->ثانيا// قيمة الوصول
<<ساعات::endl؛
}
إرجاع 0؛
}
</ل>
انتاج |:
<ل>
الصين:بكين
فرنسا:باريس
الهند:دلهي
نيبال:كاتماندو
</ل>

كما ترى ، قمنا بطباعة البلد: العاصمة (المفتاح: القيمة) باستخدام حلقة for.





إذا لاحظت ، فقد استخدمنا auto محدد النوع لمكرر الخريطة بسبب سهولة القراءة. يمكنك استخدام map::iterator صراحة كذلك.
ملحوظة: إذا رأيت الإخراج ، فسيتم فرزه حسب المفاتيح بترتيب تصاعدي. هذا لأن std :: map عبارة عن حاوية ترابطية مرتبة مع المقارنة المقدمة (الإصدار C ++ 11 وما بعده). نظرًا لأننا لم نقدم أي مقارنة ، لذلك استخدمت C ++ المقارنة الافتراضية للسلسلة.

استخدام while loop مع stp :: map

يمكننا أيضًا استخدام حلقة while بدلاً من حلقة for.



<ل>
#يشمل
#يشمل
#يشمل
# تضمين>
استخدام مساحة الاسمساعات؛
intالأساسية() {
// تهيئة الخريطة
خريطة<سلسلة ، سلسلة>countryCapitalMap؛
// أدخل عناصر مختلفة في الخريطة
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('الهند'ودلهي))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('نيبال'وكاتماندو))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('الصين'و'بكين'))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('فرنسا'و'باريس'))؛


// أنشئ مكررًا للخريطة وابدأ بالبدء
تلقاءيitr=countryCapitalMap.يبدأ()؛
// كرر باستخدام مكرر في حلقة أثناء
في حين (itr!=countryCapitalMap.نهاية())
{
ساعات::كلفة <<itr->أول// مفتاح الوصول
<< ':'
<<itr->ثانيا// قيمة الوصول
<<ساعات::endl؛
itr++؛
}
إرجاع 0؛
}
</ل>
انتاج |:
<ل>
الصين:بكين
فرنسا:باريس
الهند:دلهي
نيبال:كاتماندو
</ل>

استخدام النطاق المستند إلى الحلقة (إصدار C ++ 11 وما بعده)

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

<ل>
#يشمل
#يشمل
#يشمل

استخدام مساحة الاسمساعات؛
intالأساسية() {
// تهيئة الخريطة
خريطة<سلسلة ، سلسلة>countryCapitalMap؛
// أدخل عناصر مختلفة في الخريطة
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('الهند'ودلهي))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('نيبال'وكاتماندو))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('الصين'و'بكين'))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('فرنسا'و'باريس'))؛


// كرر استخدام مكرر في حلقة for
ل (مقدار ثابت تلقاءي &هو:countryCapitalMap) {
كلفة <<هو.أول << ':' <<هو.ثانيا<<'ن'؛
}

إرجاع 0؛
}
</ل>
انتاج |:
الصين:بكين
فرنسا:باريس
الهند:دلهي
نيبال:كاتماندو

استخدام حلقة for تعتمد على النطاق مع أزواج قيم المفاتيح (C ++ 17 الإصدار وما بعده)

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

<ل>
#يشمل
#يشمل
#يشمل

استخدام مساحة الاسمساعات؛
intالأساسية() {
// تهيئة الخريطة
خريطة<سلسلة ، سلسلة>countryCapitalMap؛
// أدخل عناصر مختلفة في الخريطة
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('الهند'ودلهي))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('نيبال'وكاتماندو))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('الصين'و'بكين'))؛
countryCapitalMap.إدراج(زوج<سلسلة ، سلسلة>('فرنسا'و'باريس'))؛


// كرر استخدام مكرر في حلقة for
ل (مقدار ثابت تلقاءي& [مفتاح القيمة] :countryCapitalMap) {
كلفة <<مفتاح<< ':' <<القيمة<< 'ن'؛
}

إرجاع 0؛
}
</ل>
انتاج |:
الصين:بكين
فرنسا:باريس
الهند:دلهي
نيبال:كاتماندو

هذا كل شيء عن كيفية التكرار على الخريطة في C ++. ترميز سعيد!