কম্পিউটার

লিস্ট মার্জ() ফাংশন সি++ এসটিএল-এ


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

STL-এ একটি তালিকা কী?

তালিকা হল একটি ডেটা স্ট্রাকচার যা ক্রমাগত সময় সন্নিবেশ এবং ক্রমানুসারে কোথাও মুছে ফেলার অনুমতি দেয়। তালিকাগুলি দ্বিগুণ লিঙ্কযুক্ত তালিকা হিসাবে প্রয়োগ করা হয়। তালিকাগুলি অ-সংলগ্ন মেমরি বরাদ্দের অনুমতি দেয়। তালিকা অ্যারে, ভেক্টর এবং ডিক এর চেয়ে কন্টেইনারে যেকোন অবস্থানে উপাদানের উত্তম সন্নিবেশ নিষ্কাশন এবং সরানো সঞ্চালন করে। তালিকায় উপাদানটির সরাসরি অ্যাক্সেস ধীর এবং তালিকা ফরওয়ার্ড_লিস্টের অনুরূপ, তবে ফরোয়ার্ড তালিকা অবজেক্টগুলি একক লিঙ্কযুক্ত তালিকা এবং সেগুলি কেবলমাত্র ফরোয়ার্ডে পুনরাবৃত্তি করা যেতে পারে।

list::merge() কি?

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

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

সিনট্যাক্স

list_container1.merge(list_container2); //will merge both lists in list_container1
list_container1.merge(list_container2, comparator);
এ উভয় তালিকা একত্রিত করবে

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

প্যারামিটার

  • list_container2 − এটি দ্বিতীয় তালিকার একটি বস্তু যা একত্রিত করতে হবে

  • তুলনাকারী - এটি একটি অভ্যন্তরীণ তুলনা সংজ্ঞায়িত করে। এটি একটি বাইনারি প্রিডিকেট যাতে তালিকা কন্টেনারে সংজ্ঞায়িত মানের দুটি ইনপুট থাকে, যদি list_container1 উপাদানটিকে list_container2-এর আগে বিবেচনা করা হয় তবে এটি মিথ্যা হবে৷

রিটার্ন মান

এই ফাংশন কিছুই ফেরত দেয় না।

তুলনাকারী ছাড়া

উদাহরণ

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

#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-এ বিপরীত ফাংশন তালিকাভুক্ত করুন

  2. C++ STL-এ তালিকা emplace() ফাংশন

  3. C++ STL-এ assign() ফাংশনের তালিকা করুন

  4. তালিকা ব্যাক() ফাংশন C++ STL-এ