কম্পিউটার টিউটোরিয়াল

C++ STL-এ forward_list::merge()

এই আর্টিকেলে আমরা C++-এ forward_list::merge() ফাংশনের কাজকর্ম, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।

STL-এ Forward_list কী?

ফরওয়ার্ড লিস্ট হলো একটি সিকোয়েন্স কন্টেইনার যা সিকোয়েন্সের যেকোনো স্থানে কনস্ট্যান্ট টাইমে ইন্সার্ট এবং ইরেজ অপারেশন করার সুবিধা দেয়। এটি সিঙ্গলি-লিংকড লিস্ট হিসেবে ইমপ্লিমেন্ট করা হয়।

forward_list::merge() কী?

forward_list::merge() C++ STL-এ একটি বিল্ট-ইন ফাংশন যা <forward_list> হেডার ফাইলে ডিক্লেয়ার করা আছে। এই ফাংশন দুটি সর্টেড ফরওয়ার্ড লিস্টকে একটি সর্টেড লিস্টে মার্জ করার জন্য ব্যবহৃত হয়।

গুরুত্বপূর্ণ: মার্জ করার আগে অবশ্যই দুটি লিস্ট সর্টেড থাকতে হবে। যদি কোনো কমপেরেটর পাস না করা হয়, তবে ডিফল্টলি operator< ব্যবহার করে সর্টেড মার্জ করে। কাস্টম কমপেরেশনের জন্য বাইনারি প্রেডিকেট পাস করা যায়।

সিনট্যাক্স

flist_container1.merge(flist_container2); // উভয় লিস্ট মার্জ করবে
flist_container1.merge(flist_container2, comparator); // কমপেরেটর সহ মার্জ

প্যারামিটার

  • list_container2: যে লিস্টটি মার্জ করা হবে, তার অবজেক্ট।
  • comparator: একটি বাইনারি প্রেডিকেট যা দুটি ভ্যালু তুলনা করে। এটি true রিটার্ন করলে প্রথম লিস্টের এলিমেন্টটি দ্বিতীয় লিস্টের এলিমেন্টের আগে যাবে।

রিটার্ন ভ্যালু

এই ফাংশন কিছুই রিটার্ন করে না (void)।

উদাহরণ ১: সর্টেড লিস্ট মার্জ

#include <bits/stdc++.h>
using namespace std;

int main() {
    //creating forward list by inserting sorted values
    forward_list<int> myForwardList1 = { 1, 3, 5, 7 };
    forward_list<int> myForwardList2 = { 2, 4, 6 };
    // merging two sorted forward lists
    myForwardList1.merge(myForwardList2);
    cout << "elements after merging" << endl;
    for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
        cout << *i << " ";
    return 0;
}

আউটপুট

elements after merging 1 2 3 4 5 6 7

উদাহরণ ২: কমপেরেটর ব্যবহার (অসর্টেড লিস্ট)

যদি লিস্টগুলো সর্টেড না থাকে, তবে আগে সেগুলো sort() করে নিতে হবে, তারপর মার্জ করতে হবে।

#include <bits/stdc++.h>
using namespace std;

int main() {
    //create unsorted forward list
    forward_list<int> myForwardList1 = {3, 2, 9};
    forward_list<int> myForwardList2 = {8, 1, 2};
    //sorting the forward list using sort() function
    myForwardList1.sort();
    myForwardList2.sort();
    myForwardList1.merge(myForwardList2);
    cout << "Elements after merging" << endl;
    for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
        cout << *i << " ";
    return 0;
}

আউটপুট

Elements after merging 1 2 2 3 8 9

নোট: মার্জ করার পর myForwardList2 খালি হয়ে যায় (এলিমেন্টগুলো myForwardList1-এ মুভ হয়ে যায়)।

  1. C++ STL-এ map::max_size() ফাংশন

  2. C++ STL-এ set এবং unordered_set এর পার্থক্য

  3. C++ STL-এ স্ট্যাক (Stack)

  4. C++ STL-এ Forward List বাস্তবায়ন: সিঙ্গলি লিংকড লিস্ট