std::सूची में C++ उदाहरण के साथ
⚡ स्मार्ट सारांश
std::सूची में C++ यह एक अनुक्रम कंटेनर है जिसे दोहरी लिंक्ड सूची के रूप में कार्यान्वित किया गया है, जो गैर-सन्निहित मेमोरी में तत्वों को संग्रहीत करते हुए किसी भी स्थिति में तेजी से सम्मिलन और विलोपन को सक्षम बनाता है और यादृच्छिक पहुंच के बजाय द्विदिश अनुक्रमिक पहुंच का समर्थन करता है।

std::list क्या है?
In C++std::list एक संग्रहण कंटेनर को संदर्भित करता है। std::list आपको कहीं से भी आइटम डालने और हटाने की अनुमति देता है। std::list को एक डबली-लिंक्ड लिस्ट के रूप में कार्यान्वित किया गया है। इसका अर्थ है कि लिस्ट डेटा को द्विदिशात्मक और क्रमिक रूप से एक्सेस किया जा सकता है।
स्टैंडर्ड टेम्प्लेट लाइब्रेरी सूची फास्ट रैंडम एक्सेस का समर्थन नहीं करती है, लेकिन यह सभी दिशाओं से अनुक्रमिक एक्सेस का समर्थन करती है।
आप सूची तत्वों को अलग-अलग मेमोरी खंडों में बिखेर सकते हैं। डेटा तक क्रमिक पहुँच के लिए आवश्यक जानकारी एक कंटेनर में संग्रहीत की जाती है। रनटाइम के दौरान आवश्यकतानुसार std::list दोनों छोर से फैल और सिकुड़ सकती है। एक आंतरिक आबंटनकर्ता स्वचालित रूप से भंडारण आवश्यकताओं को पूरा करता है।
इन विशेषताओं से एक व्यावहारिक प्रश्न उठता है: आपको वास्तव में सूची का सहारा कब लेना चाहिए?
std::list का उपयोग क्यों करें?
std::list का उपयोग करने के कारण निम्नलिखित हैं:
- std::list, array और vector जैसे अन्य अनुक्रम कंटेनरों की तुलना में बेहतर प्रदर्शन करता है।
- वे डालने, हिलाने और निकालने में बेहतर प्रदर्शन करते हैं।tracकिसी भी स्थिति से तत्वों को जोड़ना।
- std::list उन एल्गोरिदम के साथ भी बेहतर कार्य करता है जो इस प्रकार के कार्यों को गहनता से निष्पादित करते हैं।
कारण स्पष्ट होने के बाद, अगला चरण वह सिंटैक्स है जो इसे घोषित करता है।
सूची वाक्यविन्यास
std::list को परिभाषित करने के लिए हमें आयात करना होगा हेडर फ़ाइल। यहाँ std::list परिभाषा सिंटैक्स है:
template < class Type, class Alloc =allocator<T> > class list;
उपरोक्त मापदंडों का विवरण इस प्रकार है:
- T – इसमें निहित तत्व के प्रकार को परिभाषित करता है। आप T को किसी भी डेटा प्रकार से बदल सकते हैं, यहाँ तक कि उपयोगकर्ता-परिभाषित प्रकारों से भी।
- Alloc – यह एलोकेटर ऑब्जेक्ट के प्रकार को परिभाषित करता है। यह डिफ़ॉल्ट रूप से एलोकेटर क्लास टेम्पलेट का उपयोग करता है। यह मान-निर्भर है और एक सरल मेमोरी आवंटन मॉडल का उपयोग करता है।
उदाहरण 1
#include <algorithm> #include <iostream> #include <list> int main() { std::list<int> my_list = { 12, 5, 10, 9 }; for (int x : my_list) { std::cout << x << '\n'; } }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके कार्यों का उपयोग करने के लिए एल्गोरिथ्म हेडर फ़ाइल को शामिल करें।
- इसके कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल को शामिल करें।
- इसके कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल को शामिल करें.
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
- 4 पूर्णांकों के सेट के साथ my_list नामक एक सूची बनाएं।
- उपयोग पाश के लिए लूप के लिए एक वेरिएबल x बनाएं। इस वेरिएबल का उपयोग लिस्ट के तत्वों पर इटरेट करने के लिए किया जाएगा।
- कंसोल पर सूची के मानों को प्रिंट करें.
- फॉर लूप के मुख्य भाग का अंत.
- main() फ़ंक्शन के मुख्य भाग का अंत.
C++ कार्यों की सूची बनाएं
यहाँ सामान्य std::list फ़ंक्शन दिए गए हैं:
| समारोह | विवरण |
|---|---|
| डालने () | यह फ़ंक्शन इटरेटर द्वारा इंगित स्थिति से पहले एक नया आइटम सम्मिलित करता है। |
| वापस धक्का देना() | यह फ़ंक्शन सूची के अंत में एक नया आइटम जोड़ता है। |
| पुश_फ्रंट() | यह सूची के अग्र भाग में एक नया आइटम जोड़ता है। |
| पॉप_फ्रंट() | यह सूची का पहला आइटम हटा देता है। |
| आकार () | यह फ़ंक्शन सूची तत्वों की संख्या निर्धारित करता है। |
| सामने() | सूची के प्रथम आइटम निर्धारित करने के लिए. |
| पीछे() | सूची का अंतिम आइटम निर्धारित करने के लिए. |
| उलटना () | यह सूची आइटम को उलट देता है। |
| मर्ज () | यह दो क्रमबद्ध सूचियों को विलीन करता है। |
कंस्ट्रक्टर्स
यहाँ की सूची है कार्यों द्वारा प्रदान किया गया हेडर फाइल:
- डिफ़ॉल्ट कंस्ट्रक्टर std::list::list()- यह शून्य तत्वों के साथ एक खाली सूची बनाता है।
- फिल कंस्ट्रक्टर std::list::list()- यह n तत्वों के साथ एक सूची बनाता है और प्रत्येक तत्व को शून्य (0) का मान प्रदान करता है।
- रेंज कन्स्ट्रक्टर std::list::list()- पहले से अंतिम तक की रेंज में कई तत्वों वाली एक सूची बनाता है।
- कॉपी कंस्ट्रक्टर std::list::list()- यह मौजूदा सूची में शामिल प्रत्येक तत्व की एक प्रतिलिपि के साथ एक सूची बनाता है।
- मूव कंस्ट्रक्टर std::list::list()- मूव सेमेन्टिक्स का उपयोग करके किसी अन्य सूची के तत्वों के साथ एक सूची बनाता है।
- आरंभकर्ता सूची निर्माता std::list::list() - यह मूव सेमेन्टिक्स का उपयोग करके किसी अन्य सूची के तत्वों के साथ एक सूची बनाता है।
उदाहरण 2
#include <iostream> #include <list> using namespace std; int main(void) { list<int> l; list<int> l1 = { 10, 20, 30 }; list<int> l2(l1.begin(), l1.end()); list<int> l3(move(l1)); cout << "Size of list l: " << l.size() << endl; cout << "List l2 contents: " << endl; for (auto it = l2.begin(); it != l2.end(); ++it) cout << *it << endl; cout << "List l3 contents: " << endl; for (auto it = l3.begin(); it != l3.end(); ++it) cout << *it << endl; return 0; }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल को शामिल करें।
- इसके कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल को शामिल करें.
- कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी कक्षाओं का उपयोग किया जा सके।
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
- l नामक एक रिक्त सूची बनाएं.
- 1 पूर्णांकों के सेट के साथ l3 नामक एक सूची बनाएं।
- l2 नामक सूची के सभी तत्वों को प्रारंभ से अंत तक शामिल करते हुए l1 नामक सूची बनाएं।
- मूव सेमेन्टिक्स का उपयोग करके l3 नामक सूची बनाएँ। सूची l3 में सूची l2 के समान सामग्री होगी।
- कंसोल पर अन्य पाठ के साथ l नामक सूची का आकार प्रिंट करें।
- कंसोल पर कुछ पाठ प्रिंट करें.
- इसका नाम वाला एक इटरेटर बनाएं और इसका उपयोग l2 नामक सूची के तत्वों पर पुनरावृति करने के लिए करें।
- कंसोल पर l2 नामक सूची के तत्वों को प्रिंट करें।
- कंसोल पर कुछ पाठ प्रिंट करें.
- इसका नाम वाला एक इटरेटर बनाएं और इसका उपयोग l3 नामक सूची के तत्वों पर पुनरावृति करने के लिए करें।
- कंसोल पर l3 नामक सूची के तत्वों को प्रिंट करें।
- प्रोग्राम को सफलतापूर्वक पूरा होने पर मान लौटाना होगा।
- main() फ़ंक्शन के मुख्य भाग का अंत.
कंटेनर गुण
कंटेनर गुणों की सूची यहां दी गई है:
| संपत्ति | विवरण |
|---|---|
| अनुक्रम | अनुक्रम कंटेनर अपने तत्वों को एक सख्त रैखिक अनुक्रम में व्यवस्थित करते हैं। तत्वों तक अनुक्रम में उनकी स्थिति के आधार पर पहुँचा जा सकता है। |
| दोहरी-लिंक्ड सूची | हर तत्व में पिछले और अगले तत्वों को कैसे ढूँढना है, इसकी जानकारी होती है। इससे सम्मिलन और विलोपन कार्यों के लिए निरंतर समय मिलता है। |
| आबंटन-जागरूक | आबंटनकर्ता ऑब्जेक्ट का उपयोग भंडारण आकार को गतिशील रूप से संशोधित करने के लिए किया जाता है। |
सूची में सम्मिलित करना
किसी सूची में मान डालने के लिए हम विभिन्न फ़ंक्शन का उपयोग कर सकते हैं। आइए इसे प्रदर्शित करते हैं:
उदाहरण 3
#include <algorithm> #include <iostream> #include <list> int main() { std::list<int> my_list = { 12, 5, 10, 9 }; my_list.push_front(11); my_list.push_back(18); auto it = std::find(my_list.begin(), my_list.end(), 10); if (it != my_list.end()) { my_list.insert(it, 21); } for (int x : my_list) { std::cout << x << '\n'; } }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके कार्यों का उपयोग करने के लिए एल्गोरिथ्म हेडर फ़ाइल को शामिल करें।
- इसके कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल को शामिल करें।
- इसके कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल को शामिल करें.
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
- 4 पूर्णांकों के सेट के साथ my_list नामक एक सूची बनाएं।
- तत्व 11 को my_list नामक सूची के सामने डालें।
- my_list नामक सूची के अंत में तत्व 18 डालें।
- एक इटरेटर बनाएं और इसका उपयोग करके my_list सूची से तत्व 10 ढूंढें।
- यह निर्धारित करने के लिए कि उपरोक्त तत्व मिला या नहीं, if कथन का उपयोग करें।
- यदि तत्व 21 पाया गया हो तो उसे उपरोक्त तत्व से पहले डालें।
- if कथन के मुख्य भाग का अंत.
- लूप वैरिएबल x बनाने के लिए for लूप का उपयोग करें। इस वैरिएबल का उपयोग सूची तत्वों पर पुनरावृत्ति करने के लिए किया जाएगा।
- कंसोल पर सूची के मानों को प्रिंट करें.
- लूप के मुख्य भाग का अंत.
- main() फ़ंक्शन के मुख्य भाग का अंत.
किसी सूची में शामिल तत्वों को उतनी ही आसानी से हटाया भी जा सकता है।
सूची से हटाना
किसी सूची से आइटम हटाना संभव है। erase() फ़ंक्शन आपको सूची से एक आइटम या आइटमों की श्रेणी को हटाने की अनुमति देता है।
- किसी एक आइटम को हटाने के लिए, आपको बस एक पूर्णांक स्थिति पास करनी होगी। आइटम हटा दिया जाएगा।
- किसी रेंज को डिलीट करने के लिए, आपको स्टार्टिंग और एंडिंग इटरेटर पास करने होते हैं। आइए इसे करके देखते हैं।
उदाहरण 4
#include <algorithm> #include <iostream> #include <list> using namespace std; int main() { std::list<int> my_list = { 12, 5, 10, 9 }; cout << "List elements before deletion: "; for (int x : my_list) { std::cout << x << '\n'; } list<int>::iterator i = my_list.begin(); my_list.erase(i); cout << "\nList elements after deletion: "; for (int x : my_list) { std::cout << x << '\n'; } return 0; }
आउटपुट:
कोड का स्क्रीनशॉट यहां दिया गया है:
Code स्पष्टीकरण:
- इसके कार्यों का उपयोग करने के लिए एल्गोरिथ्म हेडर फ़ाइल को शामिल करें।
- इसके कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल को शामिल करें।
- इसके कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल को शामिल करें.
- अपने प्रोग्राम में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी कक्षाओं का उपयोग किया जा सके।
- main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
- 4 पूर्णांकों के सेट के साथ my_list नामक एक सूची बनाएं।
- कंसोल पर कुछ पाठ प्रिंट करें.
- लूप वैरिएबल x बनाने के लिए for लूप का उपयोग करें। इस वैरिएबल का उपयोग सूची तत्वों पर पुनरावृत्ति करने के लिए किया जाएगा।
- कंसोल पर सूची के मानों को प्रिंट करें.
- फॉर लूप के मुख्य भाग का अंत.
- एक इटरेटर i बनाएं जो सूची के पहले तत्व की ओर इशारा करता है।
- इटरेटर i द्वारा इंगित इरेज़() फ़ंक्शन का उपयोग करें।
- कंसोल पर कुछ पाठ प्रिंट करें.
- लूप वैरिएबल x बनाने के लिए for लूप का उपयोग करें। इस वैरिएबल का उपयोग सूची तत्वों पर पुनरावृत्ति करने के लिए किया जाएगा।
- कंसोल पर सूची के मानों को प्रिंट करें। यह डिलीट करने के बाद आता है।
- फॉर लूप के मुख्य भाग का अंत.
- प्रोग्राम को सफलतापूर्वक पूरा होने पर एक मान लौटाना होगा।
- main() फ़ंक्शन के मुख्य भाग का अंत.






