'std::map'-এর জন্য উপলব্ধ অনেকগুলি অপারেশনের মধ্যে, 'ইরেজ' ফাংশনটি তাদের কীগুলির উপর ভিত্তি করে উপাদানগুলি সরানোর জন্য একটি গুরুত্বপূর্ণ হাতিয়ার হিসাবে দাঁড়িয়েছে। একটি 'std::map' হল একটি সংগঠিত সহযোগী ধারক যা কী-মান জোড়া নিয়ে গঠিত। একটি 'std::map'-এর মধ্যে উপাদানগুলির বিন্যাস তাদের কী অনুসারে ধারাবাহিকভাবে সাজানো হয়, যা মূল মানের উপর ভিত্তি করে অনুসন্ধান, সন্নিবেশ এবং মুছে ফেলার মতো কার্যকর ক্রিয়াকলাপগুলিকে সহজতর করে৷
C++ এর মধ্যে, 'std::map::erase' ফাংশনটি 'std::map' ক্লাসের সদস্য ফাংশন হিসাবে কাজ করে, যা মানচিত্র থেকে নির্দিষ্ট উপাদানগুলিকে নির্মূল করতে সক্ষম করে। এটি বিভিন্ন আকারে আসে, কোন উপাদানগুলিকে মুছতে হবে তা নির্দিষ্ট করার ক্ষেত্রে নমনীয়তা প্রদান করে। এই প্রবন্ধে, আমরা 'std::map::erase'-এর বিশদ বিবরণ দেখব, এর বহুমুখীতা বোঝাতে একাধিক উদাহরণ প্রদান করব।
উদাহরণ 1: কী দ্বারা মুছে ফেলা
'std::map'-এ কী দ্বারা উপাদানগুলি মুছে ফেলার ক্ষমতা হল C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি দ্বারা প্রদত্ত একটি মৌলিক বৈশিষ্ট্য। এই ক্রিয়াকলাপটি সাধারণত ব্যবহৃত হয় যখন আপনাকে একটি প্রোগ্রামে কী-মানের জোড়াগুলি পরিচালনা এবং ম্যানিপুলেট করার প্রয়োজন হয় এবং এটি তাদের কীগুলির উপর ভিত্তি করে নির্দিষ্ট উপাদানগুলি সরানোর একটি সুবিধাজনক উপায় সরবরাহ করে। কিভাবে একটি মানচিত্র তৈরি করতে 'std::map' ব্যবহার করতে হয়, কী দ্বারা একটি উপাদান মুছে ফেলতে হয় এবং তারপর পরিবর্তিত মানচিত্রটি প্রদর্শন করতে হয় তা প্রদর্শন করার জন্য আমরা একটি উদাহরণ তৈরি করব।
# অন্তর্ভুক্ত করুন
#অন্তর্ভুক্ত <মানচিত্র>
int প্রধান ( ) {
std::মানচিত্র < int, std::string > myMap;
আমার মানচিত্র [ 1 ] = 'লাল' ;
আমার মানচিত্র [ 2 ] = 'নীল' ;
আমার মানচিত্র [ 3 ] = 'সবুজ' ;
myMap.erase ( 2 ) ;
জন্য ( const স্বয়ংক্রিয় এবং জোড়া: myMap ) {
std::cout << pair.first << ':' << pair.second << std::endl;
}
ফিরে 0 ;
}
এই উদাহরণে, আমরা যথাক্রমে ইনপুট/আউটপুট অপারেশন এবং 'std::map' কন্টেইনার ব্যবহার সক্ষম করতে প্রয়োজনীয় C++ স্ট্যান্ডার্ড লাইব্রেরি যেমন
মানচিত্রের ফলাফলের অবস্থা প্রদর্শন করতে, আমরা একটি 'এর জন্য' লুপ নিযুক্ত করি যা 'myMap'-এর মধ্যে প্রতিটি কী-মান জোড়ার মাধ্যমে পুনরাবৃত্তি করে। আমরা কনসোলে প্রতিটি কী-মান জোড়া প্রিন্ট করতে লুপের ভিতরে “std::cout” অবজেক্ট ব্যবহার করি। অবশেষে, 'রিটার্ন 0' বিবৃতিটি 'প্রধান' ফাংশনটি শেষ করে যা আমাদের প্রোগ্রামের সফল সম্পাদনের সংকেত দেয়।
কী 2 ('নীল') সহ উপাদানটি মুছে ফেলার পরে আউটপুট 'std::map'-এ অবশিষ্ট কী-মান জোড়াগুলি প্রদর্শন করে যার ফলাফল '1: লাল' এবং '3: সবুজ' আউটপুট।
উদাহরণ 2: Iterator দ্বারা মুছে ফেলা
C++-এ, পুনরাবৃত্তিকারী হল এমন বস্তু যা একটি পাত্রের মধ্যে উপাদানগুলির নেভিগেশন সহজতর করে, উপাদানগুলি অ্যাক্সেস, পরিবর্তন বা অপসারণের একটি উপায় প্রদান করে। 'std::map::erase' ফাংশনটি ইটারেটরের সাথে উপাদানগুলি সরাতেও ব্যবহার করা যেতে পারে।
এখানে একটি উদাহরণ:
# অন্তর্ভুক্ত করুন#অন্তর্ভুক্ত <মানচিত্র>
int প্রধান ( ) {
std::মানচিত্র < int, std::string > ফ্রুটফোল্ডার;
ফলের ফোল্ডার [ 1 ] = 'আম' ;
ফলের ফোল্ডার [ 2 ] = 'কমলা' ;
ফলের ফোল্ডার [ 3 ] = 'আনারস' ;
ফলের ফোল্ডার [ 4 ] = 'আঙ্গুর' ;
auto it = fruitMap.find ( 2 ) ;
যদি ( এটা ! = fruitMap.end ( ) ) {
fruitMap.erase ( এটা ) ;
}
জন্য ( const স্বয়ংক্রিয় এবং জোড়া: ফলের মানচিত্র ) {
std::cout << pair.first << ':' << pair.second << std::endl;
}
ফিরে 0 ;
}
প্রদত্ত C++ কোডটি মূল-মূল্যের জোড়া সঞ্চয় করার জন্য 'fruitMap' নামে একটি 'std::map' ঘোষণা করার মাধ্যমে শুরু হয়, পূর্ণসংখ্যাকে সংশ্লিষ্ট ফলের নামের সাথে সংযুক্ত করে। আমরা চারটি ভিন্ন ফলের এন্ট্রি সহ মানচিত্রটি তৈরি করি: “আম”, “কমলা”, “পাইনঅ্যাপল” এবং “আঙ্গুর”। এর পরে, আমরা 'fund' ফাংশনটি ব্যবহার করে একটি পুনরাবৃত্তিকারী (এটি) পেতে যা 'fruitMap'-এর মধ্যে 2 এর মূল মান সহ উপাদানটিকে নির্দেশ করে। তারপরে, নির্দিষ্ট কী সহ উপাদানটি মানচিত্রে বিদ্যমান রয়েছে তা নিশ্চিত করতে আমরা পুনরাবৃত্তিকারীটি 'শেষ()' এর সমান নয় কিনা তা পরীক্ষা করি।
কন্ডিশনাল ব্লকে, আমরা 'ইরেজ' ফাংশন ব্যবহার করে 'এটি' পুনরাবৃত্তিকারী দ্বারা নির্দেশিত উপাদানটিকে মুছে ফেলি। অবশেষে, আমরা একটি 'ফর' লুপ ব্যবহার করে পরিবর্তিত 'ফ্রুটম্যাপ'-এর অবশিষ্ট উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করি।
চূড়ান্ত আউটপুট মুছে ফেলার পরে পরিবর্তিত 'ফ্রুটম্যাপ' বিষয়বস্তু প্রদর্শন করে।
উদাহরণ 3: একটি ব্যাপ্তি মুছে ফেলা
C++-এ 'std::map' কন্টেইনারটি একটি নির্দিষ্ট পরিসরের মধ্যে উপাদানগুলিকে মুছে ফেলার জন্য একটি সুবিধাজনক পদ্ধতি প্রদান করে। 'মুছে ফেলা' ফাংশন আপনাকে পুনরাবৃত্তের উপর ভিত্তি করে মানচিত্র থেকে উপাদানগুলি সরাতে দেয় যা মুছে ফেলার সীমার শুরু এবং শেষ প্রতিনিধিত্ব করে।
এখন, একটি উদাহরণ সহ 'std::map' ব্যবহার করে একটি পরিসর মুছে ফেলার ধারণাটি অন্বেষণ করা যাক:
# অন্তর্ভুক্ত করুন#অন্তর্ভুক্ত <মানচিত্র>
int প্রধান ( ) {
std::মানচিত্র < int, std::string > নতুন মানচিত্র;
নতুন মানচিত্র [ 1 ] = 'ঘোড়া' ;
নতুন মানচিত্র [ 2 ] = 'সিংহ' ;
নতুন মানচিত্র [ 3 ] = 'বাঘ' ;
নতুন মানচিত্র [ 4 ] = 'বিড়াল' ;
newMap.erase ( newMap.lower_bound ( 2 ) , newMap.upper_bound ( 3 ) ) ;
জন্য ( const স্বয়ংক্রিয় এবং জোড়া: newMap ) {
std::cout << pair.first << ':' << pair.second << std::endl;
}
ফিরে 0 ;
}
প্রোগ্রামটি 'newMap' নামে একটি 'std::map' ঘোষণা করার মাধ্যমে শুরু হয় যা সংশ্লিষ্ট স্ট্রিং মানগুলির সাথে পূর্ণসংখ্যা কীগুলিকে সংযুক্ত করে। এর পরে, আমরা বর্গাকার বন্ধনী অপারেটর ব্যবহার করে কী-মান জোড়া দিয়ে মানচিত্রটি তৈরি করি। উদাহরণস্বরূপ, আমরা (1, 'ঘোড়া'), (2, 'সিংহ'), (3, 'বাঘ'), এবং (4, 'বিড়াল') এর মূল-মান জোড়া 'নতুন মানচিত্র' এ বরাদ্দ করি।
পরবর্তী উল্লেখযোগ্য ক্রিয়াকলাপটি মানচিত্র থেকে উপাদানগুলি মুছে ফেলার জন্য পুনরাবৃত্তিকারী ব্যবহার করে। ইরেজ ফাংশনটি 'newMap.lower_bound(2)' এবং 'newMap.upper_bound(3)' আর্গুমেন্টের সাথে নিযুক্ত করা হয়। এটি কীগুলির সাথে উপাদানগুলিকে মুছে দেয় যা পরিসরে পড়ে (2, 3)৷ অন্য কথায়, এটি মানচিত্র থেকে 'সিংহ' এবং 'বাঘ' এন্ট্রিগুলি সরিয়ে দেয়। এই অপারেশনের পরে, মানচিত্রে শুধুমাত্র 'ঘোড়া' এবং 'বিড়াল' এর সাথে সম্পর্কিত 1 এবং 4 কী সহ উপাদানগুলি রয়েছে৷
পরিশেষে, আমরা মানচিত্রের অবশিষ্ট উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করার জন্য একটি পরিসর-ভিত্তিক 'এর জন্য' লুপ ব্যবহার করি এবং কনসোলে তাদের কী-মান জোড়া মুদ্রণ করি।
ফলস্বরূপ, আউটপুট নিম্নলিখিত প্রদর্শন করে:
উদাহরণ 4: একটি পূর্বাভাসের উপর ভিত্তি করে মুছে ফেলা
একটি predicate উপর ভিত্তি করে মুছে ফেলা একটি নির্দিষ্ট শর্ত বা মানদণ্ডের উপর ভিত্তি করে একটি ডেটা স্ট্রাকচার, যেমন একটি ধারক থেকে উপাদান অপসারণ বোঝায়। 'std::map::erase' উপাদানগুলিকে শর্তসাপেক্ষে অপসারণের জন্য একটি predicate ফাংশনের সাথেও ব্যবহার করা যেতে পারে। নিম্নলিখিত উদাহরণ বিবেচনা করা যাক:
# অন্তর্ভুক্ত করুন#অন্তর্ভুক্ত <মানচিত্র>
# অন্তর্ভুক্ত <অ্যালগরিদম>
int প্রধান ( ) {
std::মানচিত্র < int, std::string > myMap = {
{ 1 , ১ জানুয়ারি ২০১৮ } ,
{ 2 , ২১ ফেব্রুয়ারি ২০১৮ } ,
{ 3 , 'মার্চ' } ,
{ 4 , ১০ এপ্রিল ২০১৮ } ,
{ 5 , 'মে' }
} ;
auto predicate = [ ] ( const std::pair < int, std::string >& উপাদান ) {
ফিরে element.second.length ( ) < 5 ;
} ;
myMap.erase ( std::remove_if ( myMap.begin ( ) , myMap.end ( ) , predicate ) , myMap.end ( ) ) ;
std::cout << ' \n ভবিষ্যদ্বাণীর উপর ভিত্তি করে উপাদানগুলি মুছে ফেলার পরে মানচিত্র:' << std::endl;
জন্য ( const স্বয়ংক্রিয় এবং জোড়া: myMap ) {
std::cout << pair.first << ':' << pair.second << std::endl;
}
ফিরে 0 ;
}
প্রয়োজনীয় হেডার ফাইলগুলি অন্তর্ভুক্ত করে প্রোগ্রামটি শুরু হয়। একটি 'std::map' নামক 'myMap' ঘোষণা করা হয় এবং 'প্রধান' ফাংশনে শুরু করা হয়। এটিতে কী-মানের জোড়া রয়েছে যা মাসের নাম এবং তাদের নিজ নিজ সংখ্যাসূচক মানগুলিকে প্রতিনিধিত্ব করে। পরবর্তীকালে, একটি 'ল্যাম্বডা' ফাংশন (প্রেডিকেট) সংজ্ঞায়িত করা হয়। এই 'lambda' ফাংশন 'std::remove_if' অ্যালগরিদমের জন্য একটি পূর্বনির্ধারক হিসাবে কাজ করে। মানচিত্র উপাদানের সাথে যুক্ত স্ট্রিং মানের দৈর্ঘ্য পাঁচটি অক্ষরের কম কিনা তা যাচাই করে।
'std::remove_if' অ্যালগরিদম তারপর 'std::map' এর 'ইরেজ' ফাংশনের সাথে ব্যবহার করা হয়। এই সংমিশ্রণটি পূর্বনির্ধারণের বৈধতার উপর ভিত্তি করে মানচিত্র থেকে উপাদানগুলিকে সরিয়ে দেয়।
প্রোগ্রামটি চালানোর পরে, মূল মানচিত্র থেকে পাঁচটির কম কী সহ উপাদানগুলি সরানো হয়, 'std::map' ব্যবহার করে একটি পূর্বনির্ধারণের ভিত্তিতে মুছে ফেলার প্রদর্শন করে।
উপসংহার
উপসংহারে, 'std::map::erase' ফাংশনটি 'std::map' থেকে উপাদানগুলি সরানোর জন্য C++-এর একটি বহুমুখী টুল। কী, পুনরাবৃত্তিকারী, ব্যাপ্তি দ্বারা মুছে ফেলা হোক বা একটি পূর্বনির্ধারণের উপর ভিত্তি করে, 'std::map::erase' ফাংশন নমনীয়তা এবং ব্যবহারের সহজতা প্রদান করে। এই ফাংশনটি আয়ত্ত করার মাধ্যমে, C++ বিকাশকারীরা দক্ষতার সাথে 'std::map' কন্টেইনারগুলির মধ্যে ডেটা পরিচালনা এবং ম্যানিপুলেট করতে পারে, তাদের কোডকে শক্তিশালী এবং বজায় রাখা সহজ করে তোলে।