C++ Std::Map::محو الأمثلة

C Std Map Mhw Alamthlt



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

في عالم C++، تعمل وظيفة 'std::map::erase' كوظيفة عضو في فئة 'std::map'، مما يتيح إزالة عناصر محددة من الخريطة. ويأتي في أشكال مختلفة، مما يوفر المرونة في تحديد العناصر التي سيتم محوها. في هذه المقالة، سوف نتعمق في تفاصيل 'std::map::erase'، مع تقديم أمثلة متعددة لتوضيح تعدد استخداماته.







مثال 1: المسح بالمفتاح

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



#تشمل
#تشمل <الخريطة>

انت مين ( ) {
الأمراض المنقولة جنسيا::خريطة < كثافة العمليات، الأمراض المنقولة جنسيا::سلسلة > خريطتي؛
خريطتي [ 1 ] = 'أحمر' ;
خريطتي [ 2 ] = 'أزرق' ;
خريطتي [ 3 ] = 'أخضر' ;

myMap.erase ( 2 ) ;

ل ( ثابت السيارات & الزوج : myMap ) {
الأمراض المنقولة جنسيا::كوت << زوج.أولا << ': ' << زوج.ثانية << ستد::endl;
}

يعود 0 ;
}


في هذا المثال، نبدأ بتضمين مكتبات C++ القياسية الضرورية مثل و لتمكين استخدام عمليات الإدخال/الإخراج والحاوية 'std::map' على التوالي. ضمن الوظيفة 'الرئيسية'، نقوم بتهيئة 'std::map' المسمى 'myMap' حيث ترتبط مفاتيح الأعداد الصحيحة بقيم السلسلة المقابلة. تتم إضافة ثلاثة أزواج من القيمة الرئيسية إلى الخريطة التي تمثل الألوان: 'الأحمر' للمفتاح 1، و'الأزرق' للمفتاح 2، و'الأخضر' للمفتاح 3. ثم نستخدم وظيفة العضو 'مسح' للمفتاح ' std::map' لإزالة العنصر المرتبط بالمفتاح 2 من خريطتنا. وبالتالي، لم يعد اللون 'الأزرق' جزءًا من الخريطة بعد هذه العملية.



لعرض الحالة الناتجة للخريطة، نستخدم حلقة 'for' التي تتكرر من خلال كل زوج من القيمة الرئيسية داخل 'myMap'. نستخدم الكائن 'std::cout' الموجود داخل الحلقة لطباعة كل زوج من المفاتيح والقيمة على وحدة التحكم. أخيرًا، تختتم عبارة 'return 0' الوظيفة 'الرئيسية' التي تشير إلى التنفيذ الناجح لبرنامجنا.





يعرض الإخراج أزواج القيمة الرئيسية المتبقية في 'std::map' بعد مسح العنصر ذو المفتاح 2 ('الأزرق') مما يؤدي إلى إخراج '1: أحمر' و'3: أخضر'.



المثال 2: المحو بواسطة التكرار

في C++، التكرارات هي كائنات تسهل التنقل بين العناصر داخل الحاوية، وتوفر وسيلة للوصول إلى العناصر أو تعديلها أو إزالتها. يمكن أيضًا استخدام وظيفة 'std::map::erase' مع التكرارات لإزالة العناصر.

هنا مثال:

#تشمل
#تشمل <الخريطة>

انت مين ( ) {
الأمراض المنقولة جنسيا::خريطة < كثافة العمليات، الأمراض المنقولة جنسيا::سلسلة > FruitFolder;
FruitFolder [ 1 ] = 'مانجو' ;
FruitFolder [ 2 ] = 'البرتقالي' ;
FruitFolder [ 3 ] = 'أناناس' ;
FruitFolder [ 4 ] = 'العنب' ;

auto it = FruitMap.find ( 2 ) ;

لو ( هو - هي ! = FruitMap.end ( ) ) {
FruitMap.erase ( هو - هي ) ;
}

ل ( ثابت السيارات & الزوج: خريطة الفاكهة ) {
الأمراض المنقولة جنسيا::كوت << زوج.أولا << ': ' << زوج.ثانية << ستد::endl;
}

يعود 0 ;
}


يبدأ كود C++ المقدم بالإعلان عن 'std::map' المسمى 'fruitMap' لتخزين أزواج القيمة الرئيسية، وربط الأعداد الصحيحة بأسماء الفاكهة المقابلة. نقوم بملء الخريطة بإدخالات لأربع فواكه مختلفة: 'المانجو'، و'البرتقال'، و'الأناناس'، و'العنب'. بعد ذلك، نستخدم وظيفة 'find' للحصول على مكرر (it) يشير إلى العنصر ذو القيمة الرئيسية 2 داخل 'fruitMap'. بعد ذلك، نتحقق مما إذا كان المُكرِّر لا يساوي 'end()' للتأكد من وجود العنصر الذي يحتوي على المفتاح المحدد في الخريطة.

في الكتلة الشرطية، نقوم بمسح العنصر الذي يشير إليه المكرر 'it' باستخدام وظيفة 'مسح'. أخيرًا، نكرر العناصر المتبقية في 'fruitMap' المعدلة باستخدام حلقة 'for'.

يعرض الإخراج النهائي محتويات 'fruitMap' المعدلة بعد المحو.

المثال 3: مسح نطاق

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

الآن، دعونا نستكشف مفهوم مسح النطاق باستخدام 'std::map' مع مثال:

#تشمل
#تشمل <الخريطة>

انت مين ( ) {
الأمراض المنقولة جنسيا::خريطة < كثافة العمليات، الأمراض المنقولة جنسيا::سلسلة > newMap;
newMap [ 1 ] = 'حصان' ;
newMap [ 2 ] = 'أسد' ;
newMap [ 3 ] = 'نمر' ;
newMap [ 4 ] = 'قطة' ;

newMap.erase ( newMap.lower_bound ( 2 ) , newMap.upper_bound ( 3 ) ) ;

ل ( ثابت السيارات & الزوج: خريطة جديدة ) {
الأمراض المنقولة جنسيا::كوت << زوج.أولا << ': ' << زوج.ثانية << ستد::endl;
}

يعود 0 ;
}


يبدأ البرنامج بإعلان 'std::map' المسمى 'newMap' والذي يربط مفاتيح الأعداد الصحيحة بقيم السلسلة المقابلة. بعد ذلك، نقوم بملء الخريطة بأزواج القيمة الرئيسية باستخدام عامل القوس المربع. على سبيل المثال، نقوم بتعيين أزواج القيمة الرئيسية (1، 'حصان')، (2، 'أسد')، (3، 'نمر')، و (4، 'قطة') إلى 'newMap'.

تتضمن العملية الهامة التالية استخدام التكرارات لمسح العناصر من الخريطة. يتم استخدام وظيفة المسح مع الوسيطتين 'newMap.lower_bound(2)' و'newMap.upper_bound(3)'. يؤدي هذا إلى مسح العناصر ذات المفاتيح التي تقع في النطاق (2، 3). بمعنى آخر، فإنه يزيل إدخالات 'الأسد' و'النمر' من الخريطة. بعد هذه العملية، تحتوي الخريطة فقط على العناصر ذات المفتاحين 1 و4، المقابلة لـ 'Horse' و'Cat'.

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

ونتيجة لذلك، يعرض الإخراج ما يلي:

المثال الرابع: المحو بناء على خبر

يشير المسح بناءً على المسند إلى إزالة العناصر من بنية البيانات، مثل الحاوية، بناءً على شرط أو معايير محددة. يمكن أيضًا استخدام 'std::map::erase' مع دالة أصلية لإزالة العناصر بشكل مشروط. لنتأمل المثال التالي:

#تشمل
#تشمل <الخريطة>
#تشمل <الخوارزمية>

انت مين ( ) {

الأمراض المنقولة جنسيا::خريطة < كثافة العمليات، الأمراض المنقولة جنسيا::سلسلة > خريطتي = {
{ 1 , 'يناير' } ,
{ 2 , 'شهر فبراير' } ,
{ 3 , 'يمشي' } ,
{ 4 , 'أبريل' } ,
{ 5 , 'يمكن' }
} ;

المسند التلقائي = [ ] ( ثابت الأمراض المنقولة جنسيا::زوج < كثافة العمليات، الأمراض المنقولة جنسيا::سلسلة >& عنصر ) {
يعود العنصر.الثانية.الطول ( ) < 5 ;
} ;

myMap.erase ( الأمراض المنقولة جنسيا::remove_if ( myMap.begin ( ) ، myMap.end ( ) ، فاعل ) ، myMap.end ( ) ) ;

الأمراض المنقولة جنسيا::كوت << ' خريطة بعد محو العناصر بناءً على المسند:' << ستد::endl;
ل ( ثابت السيارات & الزوج : myMap ) {
الأمراض المنقولة جنسيا::كوت << زوج.أولا << ': ' << زوج.ثانية << ستد::endl;
}

يعود 0 ;
}


يبدأ البرنامج بتضمين ملفات الرأس الضرورية. تم الإعلان عن 'std::map' المسمى 'myMap' وتهيئته في الوظيفة 'الرئيسية'. يحتوي على أزواج القيمة الرئيسية التي تمثل أسماء الأشهر والقيم الرقمية الخاصة بها. وبعد ذلك، يتم تعريف وظيفة 'لامدا' (المسند). تعمل وظيفة 'lambda' هذه كمسند لخوارزمية 'std::remove_if'. يتحقق مما إذا كان طول قيمة السلسلة المرتبطة بعنصر الخريطة أقل من خمسة أحرف.

يتم بعد ذلك استخدام خوارزمية 'std::remove_if' بالتزامن مع وظيفة 'مسح' في 'std::map'. تقوم هذه المجموعة بإزالة العناصر من الخريطة بناءً على صحة المسند.

بعد تشغيل البرنامج، تتم إزالة العناصر التي تحتوي على مفاتيح أقل من خمسة من الخريطة الأصلية، مما يدل على المحو بناءً على المسند باستخدام “std::map”.

خاتمة

في الختام، تعد وظيفة 'std::map::erase' أداة متعددة الاستخدامات في لغة C++ لإزالة العناصر من 'std::map'. سواء كان المسح بواسطة المفتاح أو المكرر أو النطاق أو بناءً على المسند، فإن وظيفة 'std::map::erase' توفر المرونة وسهولة الاستخدام. من خلال إتقان هذه الوظيفة، يمكن لمطوري C++ إدارة البيانات ومعالجتها بكفاءة داخل حاويات 'std::map'، مما يجعل التعليمات البرمجية الخاصة بهم أقوى وأسهل في الصيانة.