इस लेख में हम C++ में काम करने, वाक्य रचना और सूची ::मर्ज () फ़ंक्शन के उदाहरणों पर चर्चा करेंगे।
STL में सूची क्या है?
सूची एक डेटा संरचना है जो अनुक्रम में कहीं भी निरंतर समय सम्मिलन और विलोपन की अनुमति देती है। सूचियों को डबल लिंक्ड सूचियों के रूप में लागू किया जाता है। सूचियाँ गैर-सन्निहित स्मृति आवंटन की अनुमति देती हैं। सूची सरणी, वेक्टर और डेक की तुलना में कंटेनर में किसी भी स्थिति में बेहतर सम्मिलन निष्कर्षण और तत्व को स्थानांतरित करती है। सूची में तत्व तक सीधी पहुंच धीमी है और सूची आगे_सूची के समान है, लेकिन अग्रेषित सूची वस्तुएं एकल लिंक की गई सूचियां हैं और उन्हें केवल आगे की ओर पुनरावृत्त किया जा सकता है।
सूची क्या है::मर्ज()?
list::merge() C++ STL में एक इनबिल्ट फंक्शन है जिसे हैडर फाइल में डिक्लेयर किया जाता है। मर्ज () का उपयोग दो सूचियों को एक में मिलाने के लिए किया जाता है। हम केवल दो सूचियों को मर्ज कर सकते हैं, या यदि हम अतिरिक्त तुलना चाहते हैं तो हम एक तुलनित्र भी जोड़ सकते हैं।
दो सूचियों को मर्ज करने से पहले हमें यह सुनिश्चित करना चाहिए कि सूचियाँ क्रमबद्ध क्रम में हैं। यदि कोई तुलनित्र पास नहीं है तो यह दो सूचियों को एक क्रमबद्ध सूची में मिला देता है। जब हम भी दो सूचियों के बीच आंतरिक तुलना चाहते हैं तो हमें तुलनित्र जोड़ना होगा।
सिंटैक्स
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