এই নিবন্ধে আমরা C++ এ তালিকা::erase() ফাংশনের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
STL-এ একটি তালিকা কী?
তালিকা হল একটি ডেটা স্ট্রাকচার যা ক্রমাগত সময় সন্নিবেশ এবং ক্রমানুসারে কোথাও মুছে ফেলার অনুমতি দেয়। তালিকাগুলি দ্বিগুণ লিঙ্কযুক্ত তালিকা হিসাবে প্রয়োগ করা হয়। তালিকাগুলি অ-সংলগ্ন মেমরি বরাদ্দের অনুমতি দেয়। তালিকা অ্যারে, ভেক্টর এবং ডিক এর চেয়ে কন্টেইনারে যেকোন অবস্থানে উপাদানের উত্তম সন্নিবেশ নিষ্কাশন এবং সরানো সঞ্চালন করে। তালিকায় উপাদানটির সরাসরি অ্যাক্সেস ধীর এবং তালিকা ফরওয়ার্ড_লিস্টের অনুরূপ, তবে ফরোয়ার্ড তালিকা অবজেক্টগুলি একক লিঙ্কযুক্ত তালিকা এবং সেগুলি কেবলমাত্র ফরোয়ার্ডে পুনরাবৃত্তি করা যেতে পারে।
তালিকা কি::ইরেজ()?
list::erase() হল C++ STL-এ একটি অন্তর্নির্মিত ফাংশন যা হেডার ফাইলে ঘোষণা করা হয়। erase() তালিকার ধারক থেকে উপাদানগুলি সরাতে ব্যবহৃত হয়। আমরা তালিকার ধারক থেকে একটি একক উপাদান বা উপাদানের পরিসর মুছে ফেলতে পারি। এটি অপসারণ/মুছে ফেলার উপাদানগুলির সংখ্যা দ্বারা তালিকা কন্টেইনারের আকার হ্রাস করে
সিনট্যাক্স
list_container.erase(positon); list_container.erase(start_position, end_position);
এই ফাংশনটি এক বা দুটি প্যারামিটার গ্রহণ করতে পারে −
পরামিতি
-
অবস্থান - এটি একটি একক অবস্থান যা থেকে আমরা একটি উপাদান সরাতে চাই৷
-
start_position, end_position − এটি একটি পরিসর নির্ধারণ করে যেখান থেকে আমরা উপাদানগুলি সরাতে চাই৷
রিটার্ন মান
এই ফাংশনটি একটি পুনরাবৃত্তিকারী প্রদান করে যা শেষ উপাদানটির পাশে নির্দেশ করে যা সরানো হয়েছে।
উদাহরণ
নীচের কোডে আমাদের একটি STLand-এ উপস্থিত erase() ফাংশন ব্যবহার করে উপাদানগুলিকে মুছে ফেলতে হবে তার জন্য আমরা একটি ইটারেটর ব্যবহার করে প্রথম এলিমেন্ট আনব যা begin() ফাংশন ব্যবহার করে প্রথম এলিমেন্টকে নির্দেশ করবে এবং তারপরে আমরা ইটারেটরটি মুছে ফেলব। যেটিতে একটি তালিকার প্রথম উপাদান রয়েছে।
#include <bits/stdc++.h> using namespace std; int main(){ //Create a list list<int> myList; myList.push_back(2); myList.push_back(4); myList.push_back(6); myList.push_back(8); myList.push_back(10); cout<<"List before deleting elements: "; for (auto i = myList.begin(); i!= myList.end(); i++){ cout << *i<< " "; } //iterator that will point to the first element list<int>::iterator i = myList.begin(); myList.erase(i); //list after deleting the element cout << "\nList after deleting elements: "; for (auto i = myList.begin(); i!= myList.end(); i++){ cout << *i << " "; } return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
List before deleting elements: 2 4 6 8 10 List after deleting elements: 4 6 8 10
উদাহরণ
নীচের কোডে আমাদের একটি STLand-এ উপস্থিত erase() ফাংশন ব্যবহার করে উপাদানগুলি মুছে ফেলতে হবে তার জন্য আমরা একটি iterator(iterator 1) ব্যবহার করে প্রথম এলিমেন্ট আনব যা begin() ফাংশন ব্যবহার করে firstelement নির্দেশ করবে এবং আমরা অন্যটি নেব। iterator(iterator 2) সেকেন্ড এলিমেন্টের দিকে নির্দেশ করতে এবং তারপরে আমরা ইটারেটর 1 এবং ইটারেটর 2 এর মধ্যবর্তী রেঞ্জ থেকে ইটারেটরকে মুছে ফেলব এবং ফলাফল প্রদর্শন করব।
#include <bits/stdc++.h> using namespace std; int main(){ //Create a list list<int> myList; myList.push_back(2); myList.push_back(4); myList.push_back(6); myList.push_back(8); myList.push_back(10); cout<<"List before deleting elements: "; for (auto i = myList.begin(); i!= myList.end(); i++){ cout << *i << " "; } //iterator that will point to the first element list<int>::iterator i_1, i_2; i_1 = myList.begin(); i_2 = myList.begin(); //advance() function will increment the position of iterator 2 by 3 advance(i_2, 4); //now it will delete the elements from the range 0 - 4 myList.erase(i_1, i_2); //list after deleting the element cout<< "\nList after deleting elements: "; for (auto i = myList.begin(); i!= myList.end(); i++){ cout << *i << " "; } return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
List before deleting elements: 2 4 6 8 10 List after deleting elements: 10