एक std :: सूची क्या है?
C ++ में, std :: सूची एक भंडारण कंटेनर को संदर्भित करता है। एसटीडी: सूची आपको कहीं से भी आइटम सम्मिलित करने और निकालने की अनुमति देती है। Std :: सूची को दोहरे लिंक वाली सूची के रूप में कार्यान्वित किया जाता है। इसका मतलब है कि सूची डेटा को द्वि-प्रत्यक्ष और क्रमिक रूप से एक्सेस किया जा सकता है।
स्टैण्डर्ड टेम्प्लेट लाइब्रेरी सूची तेज़ यादृच्छिक पहुँच का समर्थन नहीं करती है, लेकिन यह सभी दिशाओं से क्रमिक पहुँच का समर्थन करती है।
आप सूची तत्वों को विभिन्न मेमोरी चंक्स में बिखेर सकते हैं। डेटा तक अनुक्रमिक पहुंच के लिए आवश्यक जानकारी एक कंटेनर में संग्रहीत की जाती है। एसटीडी :: सूची रनटाइम के दौरान आवश्यकतानुसार दोनों सिरों से विस्तारित और सिकुड़ सकती है। एक आंतरिक आवंटनकर्ता स्वचालित रूप से भंडारण आवश्यकताओं को पूरा करता है।
इस C ++ ट्यूटोरियल में, आप सीखेंगे:
- एक std :: सूची क्या है?
- क्यों std :: सूची का उपयोग करें?
- सूची सिंटैक्स
- C ++ सूची कार्य
- <सूची> निर्माता
- कंटेनर के गुण
- सूची में सम्मिलित करना
- सूची से हटाना
क्यों std :: सूची का उपयोग करें?
यहाँ, std का उपयोग करने के कारण हैं :: सूची:
- एसटीडी :: सूची अन्य अनुक्रम कंटेनरों जैसे सरणी और वेक्टर की तुलना में बेहतर करती है।
- किसी भी स्थिति से तत्वों को सम्मिलित करने, स्थानांतरित करने और निकालने में उनका बेहतर प्रदर्शन है।
- एसटीडी :: सूची एल्गोरिदम के साथ भी बेहतर करती है जो इस तरह के संचालन को गहनता से करते हैं।
सूची सिंटैक्स
Std :: सूची को परिभाषित करने के लिए, हमें <सूची> हेडर फ़ाइल आयात करना होगा। यहाँ std :: सूची परिभाषा वाक्यविन्यास है:
template < class Type, class Alloc =allocator> class list;
यहाँ उपरोक्त मापदंडों का विवरण दिया गया है:
- टी - निहित तत्व के प्रकार को परिभाषित करता है।
आप किसी भी डेटा प्रकार, यहां तक कि उपयोगकर्ता-परिभाषित प्रकारों द्वारा टी को स्थानापन्न कर सकते हैं।
- एलोक - आवंटनकर्ता ऑब्जेक्ट के प्रकार को परिभाषित करता है।
यह डिफ़ॉल्ट रूप से आबंटक वर्ग टेम्पलेट का उपयोग करता है। यह मूल्य-निर्भर है और एक सरल मेमोरी आवंटन मॉडल का उपयोग करता है।
उदाहरण 1:
#include#include #include int main() {std::list
my_list = { 12, 5, 10, 9 };for (int x : my_list) {std::cout << x << '\n';}}
आउटपुट:
यहाँ कोड का एक स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए एल्गोरिथ्म हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल शामिल करें।
- मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
- 4 पूर्णांकों के सेट के साथ my_list नाम की एक सूची बनाएं।
- लूप वेरिएबल x बनाने के लिए लूप के लिए उपयोग करें। इस चर का उपयोग सूची तत्वों पर पुनरावृति करने के लिए किया जाएगा।
- कंसोल पर सूची के मूल्यों को प्रिंट करें।
- एक पाश के लिए शरीर का अंत।
- मुख्य () फ़ंक्शन के शरीर का अंत।
C ++ सूची कार्य
यहाँ सामान्य std :: सूची कार्य हैं:
समारोह | विवरण |
डालें () | यह फ़ंक्शन पुनरावृत्ति बिंदुओं से पहले एक नया आइटम सम्मिलित करता है। |
पीछे धकेलना() | यह फ़ंक्शन सूची के अंत में एक नया आइटम जोड़ता है। |
push_front () | यह सूची के मोर्चे पर एक नया आइटम जोड़ता है। |
pop_front () | यह सूची का पहला आइटम हटाता है। |
आकार () | यह फ़ंक्शन सूची तत्वों की संख्या निर्धारित करता है। |
सामने () | सूची की पहली वस्तुओं को निर्धारित करने के लिए। |
वापस() | सूची के अंतिम आइटम को निर्धारित करने के लिए। |
उलटना() | यह सूची आइटम को उलट देता है। |
मर्ज () | यह दो क्रमबद्ध सूचियों का विलय करता है। |
<सूची> निर्माता
यहाँ <सूची> हेडर फ़ाइल द्वारा प्रदान किए गए कार्यों की सूची दी गई है:
- डिफ़ॉल्ट कंस्ट्रक्टर std :: सूची :: सूची () - यह शून्य तत्वों के साथ एक खाली सूची बनाता है।
- निर्माता std :: list :: list () भरें - यह n तत्वों के साथ एक सूची बनाता है और प्रत्येक तत्व को शून्य (0) का मान प्रदान करता है।
- रेंज कंस्ट्रक्टर एसटीडी :: सूची :: सूची () - पहली से आखिरी सीमा में कई तत्वों के साथ एक सूची बनाता है।
- कॉपी कंस्ट्रक्टर एसटीडी :: सूची :: सूची () - यह मौजूदा सूची में निहित प्रत्येक तत्व की एक प्रति के साथ एक सूची बनाता है।
- मूव कंस्ट्रक्टर std :: list :: list () - मूव सिमेंटिक्स का उपयोग करके दूसरी सूची के तत्वों के साथ एक सूची बनाता है।
- प्रारंभिक सूची कंस्ट्रक्टर std :: सूची :: सूची () - यह एक अन्य सूची के तत्वों के साथ एक सूची बनाता है जिसमें चाल शब्दार्थ का उपयोग किया जाता है।
उदाहरण 2:
#include#include using namespace std;int main(void) {list
l;list l1 = { 10, 20, 30 };list l2(l1.begin(), l1.end());list 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;}
आउटपुट:
यहाँ कोड का एक स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल शामिल करें।
- कोड में std नेमस्पेस को शामिल करें, बिना कॉल किए अपनी कक्षाओं का उपयोग करने के लिए।
- मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
- एक रिक्त सूची बनाएं जिसका नाम l है।
- 3 पूर्णांकों के समूह के साथ l1 नाम की एक सूची बनाएं।
- शुरू से अंत तक l1 नाम की सूची में सभी तत्वों के साथ l2 नाम की एक सूची बनाएं।
- एक शब्द बनाएँ l3 जिसका नाम चाल शब्दार्थ का उपयोग करके बनाया गया है। सूची l3 में सूची l2 जैसी ही सामग्री होगी।
- अन्य पाठ के साथ कंसोल पर l नाम की सूची का आकार प्रिंट करें।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें।
- इसे नाम दिया गया एक इटरेटर बनाएं और इसका उपयोग l2 नाम की सूची के तत्वों पर पुनरावृति करने के लिए करें।
- कंसोल पर l2 नाम की सूची के तत्वों को प्रिंट करें।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें।
- इसे नाम दिया गया एक इटरेटर बनाएं और इसका उपयोग l3 नाम की सूची के तत्वों पर पुनरावृति करने के लिए करें।
- कंसोल पर l3 नाम की सूची के तत्वों को प्रिंट करें।
- कार्यक्रम सफल होने पर मूल्य वापस करना चाहिए।
- मुख्य () फ़ंक्शन के शरीर का अंत।
कंटेनर के गुण
यहाँ कंटेनर गुणों की सूची दी गई है:
संपत्ति | विवरण |
अनुक्रम | अनुक्रम कंटेनर एक सख्त रैखिक अनुक्रम में अपने तत्वों का आदेश देते हैं। तत्वों को अनुक्रम में उनकी स्थिति से पहुँचा जाता है। |
संदेह से जुड़ी सूची | प्रत्येक तत्व में पिछले और अगले तत्वों का पता लगाने के तरीके के बारे में जानकारी है। यह सम्मिलन और विलोपन कार्यों के लिए निरंतर समय की अनुमति देता है। |
एलोकेटर-जागरूक | एक एलोकेटर ऑब्जेक्ट का उपयोग स्टोरेज आकार को गतिशील रूप से संशोधित करने के लिए किया जाता है। |
सूची में सम्मिलित करना
विभिन्न कार्य हैं जिनका उपयोग हम किसी सूची में मान सम्मिलित करने के लिए कर सकते हैं। आइए इसे प्रदर्शित करें:
उदाहरण 3:
#include#include #include int main() {std::list
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';}}
आउटपुट:
यहाँ कोड का एक स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए एल्गोरिथ्म हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल शामिल करें।
- मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
- 4 पूर्णांकों के सेट के साथ my_list नाम की एक सूची बनाएं।
- तत्व 11 को my_list नाम की सूची के सामने डालें।
- My_list नाम की सूची के अंत तक तत्व 18 डालें।
- सूची से my_list तत्व 10 को खोजने के लिए एक इट्रेटर इसे बनाएं और इसका उपयोग करें।
- यदि उपरोक्त तत्व पाया गया था या नहीं, यह निर्धारित करने के लिए एक कथन का उपयोग करें।
- उपरोक्त तत्व से पहले तत्व 21 डालें अगर यह पाया गया था।
- अगर बयान के शरीर का अंत।
- लूप वेरिएबल x बनाने के लिए लूप के लिए उपयोग करें। इस चर का उपयोग सूची तत्वों पर पुनरावृति करने के लिए किया जाएगा।
- कंसोल पर सूची के मूल्यों को प्रिंट करें।
- एक पाश के लिए शरीर का अंत।
- मुख्य () फ़ंक्शन के शरीर का अंत।
सूची से हटाना
किसी सूची से आइटम हटाना संभव है। मिटा () फ़ंक्शन आपको किसी सूची से आइटम या आइटम की एक श्रृंखला को हटाने की अनुमति देता है।
- किसी एक आइटम को हटाने के लिए, आप बस एक पूर्णांक स्थिति पास करते हैं। आइटम हटा दिया जाएगा।
- किसी श्रेणी को हटाने के लिए, आप शुरुआती और अंतिम पुनरावृत्तियों को पास करते हैं। इसे प्रदर्शित करते हैं।
उदाहरण 4:
#include#include #include using namespace std;int main() {std::list
my_list = { 12, 5, 10, 9 };cout << "List elements before deletion: ";for (int x : my_list) {std::cout << x << '\n';}list ::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;}
आउटपुट:
यहाँ कोड का स्क्रीनशॉट है:
कोड स्पष्टीकरण:
- अपने कार्यों का उपयोग करने के लिए एल्गोरिथ्म हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए iostream हेडर फ़ाइल शामिल करें।
- अपने कार्यों का उपयोग करने के लिए सूची हेडर फ़ाइल शामिल करें।
- हमारे प्रोग्राम में std नेमस्पेस को शामिल करें, बिना कॉल किए उसकी कक्षाओं का उपयोग करने के लिए।
- मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
- 4 पूर्णांकों के सेट के साथ my_list नाम की एक सूची बनाएं।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें।
- लूप वेरिएबल x बनाने के लिए लूप के लिए उपयोग करें। इस चर का उपयोग सूची तत्वों पर पुनरावृति करने के लिए किया जाएगा।
- कंसोल पर सूची के मूल्यों को प्रिंट करें।
- लूप के लिए शरीर का अंत।
- सूची के पहले तत्व को इंगित करने वाला एक आइटर बनाएं।
- इरेटर द्वारा इंगित इरेज़ () फ़ंक्शन का उपयोग करें i।
- कंसोल पर कुछ टेक्स्ट प्रिंट करें।
- लूप वेरिएबल x बनाने के लिए लूप के लिए उपयोग करें। इस चर का उपयोग सूची तत्वों पर पुनरावृति करने के लिए किया जाएगा।
- कंसोल पर सूची के मूल्यों को प्रिंट करें। यह विलोपन के बाद आता है।
- लूप के लिए शरीर का अंत।
- कार्यक्रम को सफल समापन पर एक मूल्य वापस करना होगा।
- मुख्य () फ़ंक्शन के शरीर का अंत।
सारांश:
- एसटीडी :: सूची एक भंडारण कंटेनर है।
- यह निरंतर समय पर कहीं से भी वस्तुओं को सम्मिलित करने और हटाने की अनुमति देता है।
- इसे दोहरे लिंक के रूप में लागू किया गया है
- Std :: सूची डेटा को द्वि-प्रत्यक्ष और क्रमिक रूप से एक्सेस किया जा सकता है।
- std :: सूची तेज यादृच्छिक अभिगम का समर्थन नहीं करती है। हालांकि, यह सभी दिशाओं से अनुक्रमिक पहुंच का समर्थन करता है।
- आप std की सूची तत्वों को बिखेर सकते हैं :: विभिन्न मेमोरी चंक्स में सूची।
- आप क्रम के दौरान आवश्यकतानुसार दोनों सिरों से std :: सूची को छोटा या विस्तृत कर सकते हैं।
- Std :: list में आइटम डालने के लिए, हम इन्सर्ट () फ़ंक्शन का उपयोग करते हैं।
- Std :: सूची से आइटम हटाने के लिए, हम erase () फ़ंक्शन का उपयोग करते हैं।