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

C++ STL-এ list::merge() ফাংশন


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

STL-এ List কী?

List হলো একটি ডেটা স্ট্রাকচার যা সিকোয়েন্সে যেকোনো জায়গায় কনস্ট্যান্ট টাইমে ইনসারশন এবং ডিলিশন অনুমতি দেয়। লিস্টগুলো ডাবলি লিংকড লিস্ট হিসেবে ইমপ্লিমেন্ট করা হয়। লিস্ট নন-কন্টিগুয়াস মেমরি এলোকেশন অনুমতি দেয়। অ্যারের, ভেক্টরের এবং ডিকের চেয়ে লিস্টে ইনসারশন, এক্সট্রাকশন এবং এলিমেন্ট মুভিং যেকোনো পজিশনে দ্রুত হয়। লিস্টে এলিমেন্টে ডায়রেক্ট অ্যাক্সেস ধীর এবং লিস্ট forward_list-এর মতো, কিন্তু forward list অবজেক্টগুলো সিঙ্গলি লিংকড লিস্ট এবং সেগুলো শুধু ফরওয়ার্ডে ইটারেট করা যায়।

list::merge() কী?

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

দুটি লিস্ট মার্জ করার আগে আমাদের নিশ্চিত করতে হবে যে লিস্টগুলো সর্টেড আচরণে আছে। যদি কোনো কম্পারেটর পাস না করা হয়, তবে এটি দুটি লিস্টকে একটি সর্টেড লিস্টে মার্জ করবে। যখন আমরা দুটি লিস্টের মধ্যকার ইন্টারনাল কম্পারিজনও চাইব, তখন কম্পারেটর যোগ করতে হবে।

সিনট্যাক্স

list_container1.merge(list_container2); //will merge both lists in list_container1 list_container1.merge(list_container2, comparator);

এই ফাংশন এক বা দুটি প্যারামিটার নিতে পারে −

প্যারামিটার

  • list_container2 − এটি সেকেন্ড লিস্টের অবজেক্ট যা মার্জ করা হবে

  • comparator − এটি একটি ইন্টারনাল কম্পারিজন ডিফাইন করে। এটি একটি বাইনারি প্রিডিকেট যাতে লিস্ট কন্টেইনারে ডিফাইন করা ভ্যালুর মতো দুটি ইনপুট থাকে, এটি true রিটার্ন করবে যদি list_container1 এলিমেন্টটি list_container2-এর আগে যাওয়া উচিত মনে হয়, অন্যথায় false।

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

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

কম্পারেটর ছাড়া

উদাহরণ

নিচের কোডে আমরা দুটি সর্টেড লিস্ট তৈরি করছি এবং টাস্ক হলো লিস্টগুলো মার্জ করা এবং ফলাফলটিও সর্টেড হওয়া উচিত।

#include <bits/stdc++.h> using namespace std; int main(){    //creating the sorted list    list<int> myList_1 = {2, 4, 6, 8 };    list<int> myList_2 = {1, 3, 5, 7 };    //using merge() function to merge the lists    myList_2.merge(myList_1);    cout <<"Lists after merging : ";    for(auto i = myList_2.begin(); i != myList_2.end(); ++i)       cout << *i << " ";    return 0; }

উদাহরণ

উপরোক্ত কোড রান করলে নিচের আউটপুট জেনারেট হবে

Lists after merging : 1 2 3 4 5 6 7 8

কম্পারেটরসহ

উদাহরণ

নিচের কোডে আমরা দুটি লিস্ট মার্জ করতে হবে এবং তারপর জেনারেটেড লিস্ট সর্ট করতে হবে ফাইনাল আউটপুট হিসেবে।

#include <bits/stdc++.h> using namespace std; bool compare(int myList_1, int myList_2){    return ( int(myList_1)<int(myList_2) ); } int main(){    //create a list    list<int> myList_1 = {2, 4, 1 };    list<int> myList_2 = {7, 6, 5 };    myList_1.sort();    myList_2.sort();    //using merge() function to merge the lists    myList_1.merge(myList_2);    myList_2.push_back (3);    myList_1.merge(myList_2,compare);    cout<<"List Elements are : ";    for(auto i = myList_1.begin(); i!=myList_1.end(); ++i)       cout<< ' ' << *i;    return 0; }

আউটপুট

উপরোক্ত কোড রান করলে নিচের আউটপুট জেনারেট হবে

List Elements are : 1 2 3 4 5 6 7

  1. C++ STL-এ List reverse ফাংশন

  2. C++ STL-এ list emplace() ফাংশন

  3. C++ STL-এ List assign() ফাংশন

  4. C++ STL-এ list back() ফাংশন