C++ Std::Map::Erease مثالیں۔

C Std Map Erease Mthaly



'std::map' کے لیے دستیاب بہت سے آپریشنز میں، 'Erease' فنکشن ان کیز کی بنیاد پر عناصر کو ہٹانے کے لیے ایک اہم ٹول کے طور پر کھڑا ہے۔ ایک 'std::map' ایک منظم ایسوسی ایٹیو کنٹینر ہے جو کلیدی قدر کے جوڑوں پر مشتمل ہوتا ہے۔ ایک 'std::map' کے اندر عناصر کی ترتیب کو ان کی کلیدوں کے مطابق مستقل طور پر ترتیب دیا جاتا ہے، کلیدی اقدار کی بنیاد پر تلاش، اندراج، اور حذف جیسے موثر کاموں میں سہولت فراہم کرتا ہے۔

C++ کے دائرے میں، 'std::map::erase' فنکشن 'std::map' کلاس کے ممبر فنکشن کے طور پر کام کرتا ہے، جو نقشے سے مخصوص عناصر کو ختم کرنے کے قابل بناتا ہے۔ یہ مختلف شکلوں میں آتا ہے، یہ بتانے میں لچک فراہم کرتا ہے کہ کن عناصر کو مٹانا ہے۔ اس مضمون میں، ہم 'std::map::erase' کی تفصیلات کا جائزہ لیں گے، اس کی استعداد کو واضح کرنے کے لیے متعدد مثالیں فراہم کریں گے۔







مثال 1: کلید کے ذریعے مٹانا

'std::map' میں کلید کے ذریعے عناصر کو مٹانے کی صلاحیت C++ معیاری ٹیمپلیٹ لائبریری کی طرف سے فراہم کردہ ایک بنیادی خصوصیت ہے۔ یہ آپریشن عام طور پر اس وقت استعمال ہوتا ہے جب آپ کو کسی پروگرام میں کلیدی قدر کے جوڑوں کو منظم اور جوڑ توڑ کرنے کی ضرورت ہوتی ہے، اور یہ ان کیز کی بنیاد پر مخصوص عناصر کو ہٹانے کا ایک آسان طریقہ فراہم کرتا ہے۔ ہم یہ ظاہر کرنے کے لیے ایک مثال بنائیں گے کہ نقشہ بنانے کے لیے 'std::map' کا استعمال کیسے کیا جائے، کلید کے ذریعے ایک عنصر کو مٹا دیا جائے، اور پھر ترمیم شدہ نقشہ ڈسپلے کیا جائے۔



# شامل کریں
#include

اہم int ( ) {
std :: نقشہ < int، std::string > میرا نقشہ؛
میرا نقشہ [ 1 ] = 'سرخ' ;
میرا نقشہ [ 2 ] = 'نیلا' ;
میرا نقشہ [ 3 ] = 'سبز' ;

myMap.erase ( 2 ) ;

کے لیے ( const آٹو اور جوڑا: myMap ) {
std::cout << جوڑا۔پہلا << ' : ' << pair.second << std::endl;
}

واپسی 0 ;
}


اس مثال میں، ہم بالترتیب ان پٹ/آؤٹ پٹ آپریشنز اور 'std::map' کنٹینر کے استعمال کو فعال کرنے کے لیے ضروری C++ معیاری لائبریریوں جیسے اور کو شامل کرکے شروع کرتے ہیں۔ 'مین' فنکشن کے اندر، ہم 'myMap' کے نام سے 'std::map' کو شروع کرتے ہیں جہاں انٹیجر کیز متعلقہ سٹرنگ ویلیوز سے منسلک ہوتی ہیں۔ نقشے میں تین کلیدی قدر کے جوڑے شامل کیے گئے ہیں جو رنگوں کی نمائندگی کرتے ہیں: کلید 1 کے لیے 'سرخ'، کلید 2 کے لیے 'نیلا' اور کلید 3 کے لیے 'سبز'۔ پھر، ہم 'Erease' ممبر فنکشن استعمال کرتے ہیں۔ ہمارے نقشے سے کلید 2 سے وابستہ عنصر کو ہٹانے کے لیے std::map” کلاس۔ نتیجتاً، اس آپریشن کے بعد 'نیلا' رنگ نقشے کا حصہ نہیں رہا۔



نقشے کی نتیجے میں آنے والی حالت کو ظاہر کرنے کے لیے، ہم ایک 'for' لوپ استعمال کرتے ہیں جو 'myMap' کے اندر ہر کلیدی قدر کے جوڑے کے ذریعے دہرایا جاتا ہے۔ ہم کنسول میں کلیدی قدر کے ہر جوڑے کو پرنٹ کرنے کے لیے لوپ کے اندر موجود 'std::cout' آبجیکٹ کا استعمال کرتے ہیں۔ آخر میں، 'واپسی 0' کا بیان 'مین' فنکشن کو ختم کرتا ہے جو ہمارے پروگرام کے کامیاب نفاذ کا اشارہ دیتا ہے۔





کلید 2 ('بلیو') والے عنصر کے مٹ جانے کے بعد آؤٹ پٹ 'std::map' میں کلیدی قدر کے باقی جوڑے دکھاتا ہے جس کے نتیجے میں '1: سرخ' اور '3: سبز' آؤٹ پٹ ہوتا ہے۔



مثال 2: Iterator کے ذریعے مٹانا

C++ میں، تکرار کرنے والے وہ اشیاء ہیں جو کنٹینر کے اندر عناصر کی نیویگیشن میں سہولت فراہم کرتے ہیں، عناصر تک رسائی، ترمیم یا ہٹانے کا ذریعہ پیش کرتے ہیں۔ عناصر کو ہٹانے کے لیے 'std::map::erase' فنکشن کو تکرار کرنے والوں کے ساتھ بھی استعمال کیا جا سکتا ہے۔

یہاں ایک مثال ہے:

# شامل کریں
#include

اہم int ( ) {
std :: نقشہ < int، std::string > پھل کا فولڈر؛
پھل کا فولڈر [ 1 ] = 'آم' ;
پھل کا فولڈر [ 2 ] = 'کینو' ;
پھل کا فولڈر [ 3 ] = 'انناس' ;
پھل کا فولڈر [ 4 ] = 'انگور' ;

auto it = fruitMap.find ( 2 ) ;

اگر ( یہ ! = fruitMap.end ( ) ) {
fruitMap.erase ( یہ ) ;
}

کے لیے ( const آٹو اور جوڑا: پھل کا نقشہ ) {
std::cout << جوڑا۔پہلا << ' : ' << pair.second << std::endl;
}

واپسی 0 ;
}


فراہم کردہ C++ کوڈ کلیدی قدر کے جوڑوں کو ذخیرہ کرنے کے لیے 'std::map' نامی 'fruitMap' کے اعلان سے شروع ہوتا ہے، انٹیجرز کو متعلقہ پھلوں کے ناموں سے جوڑ کر۔ ہم نقشے کو چار مختلف پھلوں کے اندراجات کے ساتھ آباد کرتے ہیں: 'آم'، 'اورنج'، 'پائن ایپل'، اور 'انگور'۔ اس کے بعد، ہم 'find' فنکشن کا استعمال کرتے ہوئے ایک تکرار کرنے والا (it) حاصل کرتے ہیں جو 'fruitMap' کے اندر 2 کی کلیدی قدر کے ساتھ عنصر کی طرف اشارہ کرتا ہے۔ پھر، ہم چیک کرتے ہیں کہ آیا ایٹریٹر 'end()' کے برابر نہیں ہے تاکہ یہ یقینی بنایا جا سکے کہ مخصوص کلید والا عنصر نقشے میں موجود ہے۔

مشروط بلاک میں، ہم اس عنصر کو مٹاتے ہیں جس کی طرف اشارہ کیا گیا ہے 'it' iterator کے ذریعے 'Erease' فنکشن کا استعمال کرتے ہوئے۔ آخر میں، ہم 'for' لوپ کا استعمال کرتے ہوئے ترمیم شدہ 'fruitMap' میں باقی عناصر کے ذریعے اعادہ کرتے ہیں۔

حتمی آؤٹ پٹ مٹانے کے بعد ترمیم شدہ 'فروٹ میپ' مواد کو دکھاتا ہے۔

مثال 3: رینج کو مٹانا

C++ میں 'std::map' کنٹینر ایک مخصوص رینج کے اندر عناصر کو مٹانے کا ایک آسان طریقہ فراہم کرتا ہے۔ 'Erease' فنکشن آپ کو نقشے سے عناصر کو دوبارہ کرنے والوں کی بنیاد پر ہٹانے کی اجازت دیتا ہے جو حذف کیے جانے والے رینج کے آغاز اور اختتام کی نمائندگی کرتے ہیں۔

اب، آئیے ایک مثال کے ساتھ 'std::map' کا استعمال کرتے ہوئے رینج کو مٹانے کے تصور کو دریافت کریں:

# شامل کریں
#include

اہم int ( ) {
std :: نقشہ < int، std::string > نیا نقشہ؛
نیا نقشہ [ 1 ] = 'گھوڑا' ;
نیا نقشہ [ 2 ] = 'شیر' ;
نیا نقشہ [ 3 ] = 'چیتا' ;
نیا نقشہ [ 4 ] = 'کیٹ' ;

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

کے لیے ( const آٹو اور جوڑا: نیا نقشہ ) {
std::cout << جوڑا۔پہلا << ' : ' << pair.second << std::endl;
}

واپسی 0 ;
}


پروگرام کا آغاز 'std::map' کے نام سے ہوتا ہے جس کا نام 'newMap' ہوتا ہے جو انٹیجر کیز کو متعلقہ سٹرنگ ویلیوز سے جوڑتا ہے۔ اس کے بعد، ہم مربع بریکٹ آپریٹر کا استعمال کرتے ہوئے نقشے کو کلیدی قدر کے جوڑوں کے ساتھ آباد کرتے ہیں۔ مثال کے طور پر، ہم (1، 'گھوڑا')، (2، 'شیر')، (3، 'ٹائیگر')، اور (4، 'بلی') کے کلیدی قدر کے جوڑے 'نیا نقشہ' کو تفویض کرتے ہیں۔

اگلے اہم آپریشن میں نقشے سے عناصر کو مٹانے کے لیے تکرار کرنے والوں کا استعمال شامل ہے۔ مٹانے کا فنکشن 'newMap.lower_bound(2)' اور 'newMap.upper_bound(3)' آرگیومینٹس کے ساتھ استعمال کیا جاتا ہے۔ یہ کلیدوں کے ساتھ عناصر کو مٹا دیتا ہے جو رینج میں آتے ہیں (2, 3)۔ دوسرے الفاظ میں، یہ نقشے سے 'شیر' اور 'ٹائیگر' کے اندراجات کو ہٹا دیتا ہے۔ اس آپریشن کے بعد، نقشے میں 'گھوڑا' اور 'بلی' کے مطابق صرف 1 اور 4 کیز والے عناصر شامل ہیں۔

آخر میں، ہم نقشے میں باقی عناصر کے ذریعے اعادہ کرنے کے لیے رینج پر مبنی 'for' لوپ کا استعمال کرتے ہیں اور کنسول پر ان کے کلیدی قدر کے جوڑے پرنٹ کرتے ہیں۔

نتیجے کے طور پر، آؤٹ پٹ مندرجہ ذیل دکھاتا ہے:

مثال 4: پیش گوئی کی بنیاد پر مٹانا

پیش گوئی کی بنیاد پر مٹانے سے مراد ڈیٹا ڈھانچے سے عناصر کو ہٹانا ہے، جیسے کنٹینر، کسی مخصوص حالت یا معیار کی بنیاد پر۔ 'std::map::erase' کو مشروط طور پر عناصر کو ہٹانے کے لیے ایک predicate فنکشن کے ساتھ بھی استعمال کیا جا سکتا ہے۔ آئیے درج ذیل مثال پر غور کریں:

# شامل کریں
#include
#include

اہم int ( ) {

std :: نقشہ < int، std::string > myMap = {
{ 1 ، 'جنوری' } ،
{ 2 ، 'فروری' } ،
{ 3 ، 'مارچ' } ،
{ 4 ، 'اپریل' } ،
{ 5 ، 'مئی' }
} ;

آٹو پیش گوئی = [ ] ( const std::pair < int، std::string >& عنصر ) {
واپسی element.second.length ( ) < 5 ;
} ;

myMap.erase ( std::remove_if ( myMap.begin ( ) , myMap.end ( ) ، پیش گوئی کرنا ) , myMap.end ( ) ) ;

std::cout << ' \n پیشین گوئی کی بنیاد پر عناصر کو مٹانے کے بعد نقشہ:' << std::endl;
کے لیے ( const آٹو اور جوڑا: myMap ) {
std::cout << جوڑا۔پہلا << ' : ' << pair.second << std::endl;
}

واپسی 0 ;
}


پروگرام ضروری ہیڈر فائلوں کو شامل کرکے شروع ہوتا ہے۔ ایک 'std::map' جسے 'myMap' کہا جاتا ہے اسے 'مین' فنکشن میں قرار دیا جاتا ہے اور شروع کیا جاتا ہے۔ اس میں کلیدی قدر کے جوڑے ہوتے ہیں جو مہینوں کے ناموں اور ان کی متعلقہ عددی اقدار کی نمائندگی کرتے ہیں۔ اس کے بعد، ایک 'لیمبڈا' فنکشن (پیش گوئی) کی وضاحت کی گئی ہے۔ یہ 'lambda' فنکشن 'std::remove_if' الگورتھم کے لیے پیشین گوئی کے طور پر کام کرتا ہے۔ یہ تصدیق کرتا ہے کہ آیا نقشہ کے عنصر سے وابستہ سٹرنگ ویلیو کی لمبائی پانچ حروف سے کم ہے۔

پھر 'std::remove_if' الگورتھم کو 'std::map' کے 'Erease' فنکشن کے ساتھ مل کر استعمال کیا جاتا ہے۔ یہ امتزاج پیشین گوئی کی درستگی کی بنیاد پر نقشے سے عناصر کو ہٹاتا ہے۔

پروگرام کو چلانے کے بعد، پانچ سے کم کیز والے عناصر کو اصل نقشے سے ہٹا دیا جاتا ہے، جو 'std::map' کا استعمال کرتے ہوئے پیش گوئی کی بنیاد پر مٹانے کا مظاہرہ کرتا ہے۔

نتیجہ

آخر میں، 'std::map::erase' فنکشن C++ میں 'std::map' سے عناصر کو ہٹانے کے لیے ایک ورسٹائل ٹول ہے۔ چاہے کلید، تکرار کرنے والا، رینج، یا کسی پیش گوئی کی بنیاد پر مٹایا جائے، 'std::map::erase' فنکشن لچک اور استعمال میں آسانی فراہم کرتا ہے۔ اس فنکشن میں مہارت حاصل کر کے، C++ ڈویلپرز 'std::map' کنٹینرز کے اندر موجود ڈیٹا کو مؤثر طریقے سے منظم اور جوڑ توڑ کر سکتے ہیں، جس سے ان کے کوڈ کو مضبوط اور برقرار رکھنا آسان ہو جاتا ہے۔