C++-এ forward_list::cbefore_begin() ফাংশনটির কাজ দেখানো হলো এই টাস্ক।
একটি forward_list শুধু পরবর্তী উপাদানের সাথে লিংক রাখে, সাধারণ লিস্টের মতো নয় যা পরবর্তী এবং পূর্ববর্তী উভয় উপাদানের সাথে লিংক রাখে, যা উভয় দিকেই ইটারেশন করতে সাহায্য করে। কিন্তু forward_list শুধু ফরওয়ার্ড দিকেই ইটারেট করতে পারে।
forward_list::cbefore_begin() ফাংশনটি C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরির অংশ। এটি লিস্টের প্রথম উপাদানের আগের পজিশন পেতে ব্যবহৃত হয়।
<forward_list> হেডার ফাইলটি ইনক্লুড করতে হবে এই ফাংশন কল করার জন্য।
সিনট্যাক্স
Forward_List_Name.cbefore_begin();
প্যারামিটার
ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।
রিটার্ন ভ্যালু
ফাংশনটি একটি কনস্ট্যান্ট ইটারেটর রিটার্ন করে যা forward_list-এ প্রথম উপাদানের আগের পজিশনকে পয়েন্ট করে।
উদাহরণ
Input: 8, 9, 32, 21 Output: 56 8 9 32 21
ব্যাখ্যা − এখানে আমরা 8,9,32,21 উপাদান দিয়ে একটি ফরওয়ার্ড লিস্ট তৈরি করলাম। তারপর cbefore_begin() ফাংশনটি কল করলাম যা লিস্টের প্রথম উপাদানের আগের পজিশনকে পয়েন্ট করে এবং সেটি ইটারেটর itr-এ সংরক্ষণ করলাম। তারপর insert_after() ফাংশনটি ব্যবহার করলাম 56 উপাদানটি প্রথম উপাদানটির আগের পজিশনে, অর্থাৎ 8-এর আগে ইনসার্ট করার জন্য। তাই যখন প্রিন্ট করলাম, আউটপুট আসল 56 8 9 32 21, যা দেখাচ্ছে 56 লিস্টের শুরুতে আসে এবং cbefore_begin ফাংশনটি সঠিকভাবে কাজ করেছে।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি −
- প্রথমে একটি forward_list তৈরি করুন, ধরুন “Lt” টাইপ int এবং এতে কিছু ভ্যালু দিন।
- তারপর auto টাইপের একটি অবজেক্ট “itr” তৈরি করুন এবং সেটিতে cbefore_begin() ফাংশন কল করে রিটার্ন করা ইটারেটর সংরক্ষণ করুন।
- তারপর insert_after() ফাংশনটি ব্যবহার করুন লিস্টের শুরুতে একটি নতুন উপাদান ইনসার্ট করতে। ইটারেটর “itr” প্রথম আর্গুমেন্ট হিসেবে পাস করুন এবং ইনসার্ট করার নাম্বার দ্বিতীয় আর্গুমেন্ট হিসেবে।
- তারপর লিস্ট প্রিন্ট করার জন্য একটি For লুপ শুরু করুন।
- তারপর for লুপের ভিতরে auto টাইপের একটি অবজেক্ট “itr” তৈরি করুন begin() এবং end() ফাংশনের রিটার্ন ভ্যালু রিসিভ করার জন্য। “itr”-কে ইনিশিয়ালাইজ করুন begin() ফাংশন ব্যবহার করে লিস্টের প্রথম উপাদান দিয়ে।
- তারপর for লুপের টার্মিনেটিং কন্ডিশন স্পেসিফাই করুন “itr” লিস্টের শেষ উপাদানটি না হওয়া পর্যন্ত cend() ফাংশন ব্যবহার করে।
- *itr প্রিন্ট করুন।
এল्गরিদম
Start Step 1->In function main() Initialize forward_list<int> Lt={} Initialize auto itr= Lt.cbefore_begin() Call insert_after(itr, new_element) Loop For auto itr = Ltcbegin() and itr != Lt.end() and itr++ Print *itr End Stop
উদাহরণ
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list<int> Lt = { 40, 55, 67, 89 }; auto itr = Lt.cbefore_begin(); Lt.insert_after(itr, 77); for (auto itr = Lt.begin(); it != Lt.end(); ++itr) cout << *itr << " "; return 0; }
আউটপুট
যদি উপরের কোডটি রান করি তবে নিচের আউটপুট জেনারেট হবে −
77 40 55 67 89