C ++ में प्रोग्रामिंग(programming) के मॉड्यूल(module) 5 में आपका स्वागत है। हम विभिन्न उदाहरण कार्यक्रमों पर चर्चा कर रहे हैं जो आम तौर पर आपने सी में लिखे हैं, और अब हम दिखा रहे हैं कि उन्हें सी ++ में समान रूप से कैसे लिखा जा सकता है। कितनी बार C ++ मानक लाइब्ररी(library) का उपयोग इसके लिए किया जा सकता है और इसके साथ, हम यह दिखाना चाहते हैं, कि C ++ प्रोग्रामिंग(programming) की आसानी को कैसे बढ़ाता है। तो, इस मॉड्यूल(module) में हम स्टैक्स और इसके अनुप्रयोगों के बारे में बात करेंगे। हम C में स्टैक(stack) के कार्यान्वयन और उपयोग को समझने की कोशिश करेंगे, जिसे मैं आप सभी को जानता हूं और फिर हम बताएंगे कि, C ++ में मानक लाइब्ररी(library) का उपयोग कैसे stacks किया जा सकता है। इसलिए, ये ऐसे विषय हैं जिनका हम मुख्य रूप से एक स्ट्रिंग(string)(string) को उलट कर उदाहरण के रूप में पोस्टफिक्स(postfix) अभिव्यक्ति का मूल्यांकन करेंगे। स्टैक(stack) के परिचय पर, बस पुनर्कथन करने के लिए। स्टैक(stack) एक एलआईएफओ(LIFO) स्ट्रक्चर(structure) है; अंतिम-इन-प्रथम-आउट कंटेनर जो डेटा(data) आइटम की मनमानी संख्या का संग्रह बनाए रखता है। सरणी(array) में कोई प्रतिबंध नहीं है; सरणियों के आकार के आधार पर मैं कितने तत्वों को रख सकता हूं, इसका प्रतिबंध है। बिना किसी परिभाषा के स्टैक(stack), सभी तत्व डेटा(data) तत्व जो स्टैक(stack) में रहते हैं, उन्हें एक ही प्रकार का होना चाहिए, लेकिन मैं किसी भी संख्या में तत्वों को रख सकता हूं। तो, सी में एक स्टैक(stack) बनाने के लिए, हमें करने की आवश्यकता है; ये सामान्य कदम हैं जिनका हमें पालन करना होगा। पहले हमें तत्व के डेटा(data) प्रकार पर निर्णय लेने की आवश्यकता है, एक स्ट्रक्चर(structure) या कंटेनर को परिभाषित करें, वास्तव में परिभाषित करने के लिए कि सी में हमें कुछ अधिकतम आकार का उपयोग करने की आवश्यकता होगी, अन्यथा सी संकलक हमें इसे परिभाषित करने की अनुमति नहीं देता है, एक शीर्ष चर घोषित करें जो स्टैक(stack) के शीर्ष को बनाए रखेगा और फिर हमें उस स्टैक(stack) के संचालन के लिए आवश्यक चार कार्यों को लिखना होगा। फ़ंक्शन(function) पुश(push), जो स्टैक(stack) में एक तत्व जोड़ता है; फ़ंक्शन(function) पॉप, जो शीर्ष सबसे अधिक तत्व को हटाता है, तत्व अंतिम जोड़ा; फ़ंक्शन(function) टॉप, जो मुझे इसे हटाए बिना शीर्ष सबसे अधिक तत्व देता है और अंत में, हमें एक फ़ंक्शन(function) isempty() या खाली होना चाहिए, जो मुझे बताएगा कि स्टैक(stack) में सभी तत्वों में से कोई है या नहीं। तो, अगर isempty() सही है, तो पॉप और टॉप जैसे ऑपरेशन अमान्य होंगे क्योंकि हटाने या वापस करने के लिए कोई शीर्ष तत्व नहीं है। इसलिए, हम नोट कर सकते हैं कि जैसे ही हम एक स्टैक(stack) के लिए तत्वों के प्रकार को बदलते हैं, हमें फिर से लागू करने की आवश्यकता है, स्टैक(stack) के पूरे कोड को फिर से लिखना होगा जो पूर्णांक के स्टैक(stack) के लिए स्टैक(stack) का कोड है, और स्टैक(stack) के लिए कोड तारों का ढेर अलग होगा, हालांकि LIFO की मूल धारणा दोनों मामलों में मान्य होगी। तो, साइन के विपरीत, इन सभी कार्यों को रूट करें जो हमारे पास C मानक लाइब्ररी(library) में हैं, हमने math.h में पहले देखा है, हमारे पास लाइब्ररी(library) के बहुत सारे कार्य हैं। इसलिए, यदि मैं साइन या कंप्यूट वर्गमूल की गणना करना चाहता हूं या arctan की गणना करना चाहता हूं, तो मुझे उस फ़ंक्शन(function) को लिखने की आवश्यकता नहीं है, मैं इसे केवल लाइब्रेरी से उपयोग कर सकता हूं। इसके विपरीत, सी मानक लाइब्ररी(library) मुझे एक स्टैक(stack) का उपयोग करने के लिए एक तंत्र नहीं देता है। यह मुझे एक स्टैक(stack) नहीं देता है जिसका मैं तुरंत उपयोग कर सकता हूं। तो, यह सी प्रोग्रामिंग(programming) के साथ मामलों की वर्तमान स्थिति है। इसलिए, इस संदर्भ में, हम यह देखने का प्रयास करेंगे कि यदि आप C ++ का उपयोग करते हैं तो चीजें कैसे बदल सकती हैं। तो, आइए हम उन कुछ सामान्य समस्याओं पर भी ध्यान दें, जिन्हें हमने एक स्टैक(stack) का उपयोग करके हल करने का प्रयास किया था। मैं उस स्ट्रिंग(string) को उल्टा करना चाहूंगा जो बाएं से दाएं क्रम में है जिसे मैं बाएं से दाएं क्रम में बदलना चाहूंगा एक विशिष्ट कार्यक्रम है। एक और उपसर्ग(postfix) अभिव्यक्ति का मूल्यांकन है जैसा कि आप सभी जानते हैं कि हम आमतौर पर एफ़िक्स नोटेशन के साथ अभिव्यक्ति लिखते हैं जहां ऑपरेटर(operator) ऑपरेंड(operand) के बीच होता है। तो, मैं एक उदाहरण दिखा रहा हूँ 1 + 2 * 3 - 4, अगर मुझे इस अभिव्यक्ति का मूल्यांकन करना है; हालाँकि हम अभिव्यक्ति को बाएँ से दाएँ पढ़ते हैं, जब हम इसका मूल्यांकन करने जाते हैं तो हम सख्ती से बाएँ से दाएँ मूल्यांकन नहीं कर पाएँगे। हम जानते हैं कि स्टार गुणन में जोड़ और घटाव की तुलना में अधिक पूर्वता होती है। तो, पहले हमें 2 को 3 के साथ गुणा करना होगा, परिणाम 6 प्राप्त करना होगा और फिर हमारे पास एक प्लस और एक माइनस होगा, जिसमें दोनों की एक ही मिसाल है, लेकिन वे सहयोगी हैं। इसलिए, हमें बाएं से दाएं आगे बढ़ना होगा और गणना करना होगा कि परिणाम 3 हो जाएगा। इसलिए, हम एक अभिव्यक्ति कैसे लिखते हैं, के संदर्भ में इन्फिक्स नोटेशन बहुत अच्छा है। हमें अपने स्कूल के दिनों से सिखाया गया है कि वे इन अभिव्यक्ति को लिखें और इसका मूल्यांकन करने के लिए तथाकथित BODMAS नियमों का पालन करें, लेकिन पोस्टफ़िक्स एक्सप्रेशन का मूल्यांकन करना बहुत मुश्किल हो जाता है क्योंकि ऑपरेटरों के आदेश को निष्पादित किया जाना है, जो कि उनकी पूर्वता के आधार पर बीच में है संबद्धता। इसलिए, हम पोस्टफिक्स(postfix) नोटेशन के रूप में जाने वाले एक अलग नोटेशन का सहारा लेते हैं। उपसर्ग(postfix) संकेतन में, यह है, पहले ऑपरेंड(operand) निर्दिष्ट किया गया है और फिर ऑपरेटर(operator) आता है यही कारण है कि यह पोस्टफिक्स(postfix) है। इसलिए, अगर मेरे पास सी ऑपरेटर(operator) है तो उसके लिए ऑपरेंड(operand) पहले ही हो चुके हैं। इसलिए, यदि ऑपरेटर(operator) के पास एक एरिटी 2 है, तो मुझे पता है कि उस ऑपरेटर(operator) के लिए तुरंत 2 पूर्ववर्ती ऑपरेंड(operand) लगाए जाने हैं। तो, हम यहाँ एक उदाहरण दिखाते हैं जहाँ आप देख सकते हैं कि अगर मैं इस अभिव्यक्ति को देखूँ जो कि यहाँ दी गई जानकारी से बदल दी गई है, तो मेरी अभिव्यक्ति 1 2 3 * + 4 है - और यह भी एक समस्या है कैसे एक उपसर्ग(postfix) अभिव्यक्ति के लिए infix अभिव्यक्ति परिवर्तित करने के लिए। यह भी एक स्टैक(stack) का उपयोग करके हल किया जा सकता है, लेकिन यहां हम सिर्फ यह दिखा रहे हैं, यदि पोस्टफिक्स(postfix) अभिव्यक्ति दी गई है, तो हम स्टैक(stack) का उपयोग करके इसका मूल्यांकन कैसे करते हैं। इसलिए, ये सभी अलग-अलग स्टैक(stack) हैं जो हम कर सकते हैं जो हम कर सकते हैं; अभिव्यक्ति को बाएं से दाएं स्कैन करें, एक निशुल्क ऑपरेंड(operand) लें, इसे स्टैक(stack) में डालें, जब तक हम एक ऑपरेटर(operator) भर में नहीं आते तब तक स्टैकिंग रखें। तो, यहां हम 1 पुश(push) देते हैं, फिर हम 2 पुश(push) देते हैं, फिर हम 3 पुश(push) देते हैं और फिर हम ऑपरेटर(operator) स्टार पर आते हैं, जिसकी परिभाषा में 2 हैं। इसलिए, मुझे पता है कि इसके लिए अंतिम 2 ऑपरेंड(operand) की आवश्यकता होगी, हम इन 2 को पॉप करेंगे। 3 संचालित प्राप्त करने के लिए 6 प्राप्त करें और इसे पीछे धकेलें। फिर हमें प्लस अगले ऑपरेटर(operator) मिलता है। इसलिए, हम जानते हैं कि दो ऑपरेंड(operand) की भी जरूरत है। तो, हम 6 और 1 पॉप करते हैं, स्टैक(stack) खाली हो जाता है, हम इसे 7 प्राप्त करने के लिए प्लस के साथ संचालित करते हैं और इसे पीछे धकेलते हैं और हम परिणाम प्राप्त करने के लिए इस तरह से आगे बढ़ते हैं। इसलिए, यह देखने के लिए एक अच्छा उदाहरण है कि हमें स्टैक(stack) के विभिन्न कार्यों का उपयोग करके आगे बढ़ने की आवश्यकता है, जो वास्तव में हमारे लिए उपलब्ध उपसर्ग(postfix) अभिव्यक्ति की गणना करता है। इसी तरह, कई अन्य समस्याएं जैसे कि पेलिंड्रोम्स(palindrome) की पहचान, जो दोनों तरफ से एक समान पढ़ती हैं, केंद्र मार्कर के साथ या उसके बिना, जो मध्य में एक विशेष वर्ण है, को स्टैक(stack) का उपयोग करके पहचाना जा सकता है, इनफ़िक्स एक्सप्रेशन इसे पोस्टफिक्स(postfix) की गहराई में खोज सकते हैं किया जा सकता है और एक उदाहरण कई हैं। तो, स्टैक(stack) किसी भी सॉफ्टवेयर सिस्टम की प्रोग्रामिंग(programming) में एक महत्वपूर्ण भूमिका निभाता है और इसलिए, यदि आपके पास स्टैक(stack) का उपयोग करने के लिए सुविधाजनक, विश्वसनीय, मजबूत तंत्र हो सकता है तो हम दृढ़ता से लाभान्वित होंगे और फिर यही सी ++ हमें एक रेडीमेड समाधान के रूप में देता है। तो, आइए हम एक स्ट्रिंग(string) को उलटते हुए देखें। यह आपके लिए एक रिकैप से अधिक है, यह एक सी प्रोग्राम है जो स्ट्रिंग(string) को उलटने की कोशिश कर रहा है क्योंकि आप देख सकते हैं कि स्टैक(stack) को एक स्ट्रक्चर(structure) के रूप में परिभाषित किया गया है, जिसमें एक सरणी(array) है जो तत्वों का कंटेनर है और एक मार्कर है जो एक मार्कर है शीर्ष सूचकांक जो सबसे अधिक तत्व के वर्तमान सूचकांक को बनाए रखेगा, और ये चार कार्यों का कार्यान्वयन खाली, शीर्ष, झाड़ी और पॉप हैं; खाली की जाँच करता है कि क्या शीर्ष मूल्य -1 है; -1 नामित करता है कि कोई तत्व नहीं है क्योंकि सरणी(array) में न्यूनतम सूचकांक मूल्य 0. हो सकता है। इसलिए, यदि यह शून्य से 1 है, तो हम नामित करते हैं कि स्टैक(stack) खाली है। शीर्ष बस शीर्ष पॉज़िटि से तत्व देता हैपर; पुश(push) शीर्ष स्थिति को बढ़ाता है और नए तत्व को देता है जिसे स्टैक(stack) पर स्टैक(stack) में जोड़ा जाता है और पॉप बस शीर्ष बिंदु पर या शीर्ष सूचकांक को घटाता है। इसलिए, जिस तत्व को सबसे ऊपर माना जाता था, उसे अब तक सबसे ऊपर नहीं माना जाता है, इसके ठीक नीचे के तत्व को सबसे ऊपर माना जाता है और चूंकि हम इस ऑपरेशन को नहीं कर सकते हैं यदि स्टैक(stack) पहले से ही खाली है, तो यह जांचना अच्छा होगा कि क्या नीचे है? इससे पहले कि हम वास्तव में पॉप ऑपरेशन करें, स्टैक(stack) खाली है। अब, यह है; हम सभी यह जानते हैं कि यदि आप यहाँ एक स्ट्रिंग(string) A B C D E का उपयोग कर रहे हैं, तो हम बस एक लूप में जा सकते हैं, इन सभी वर्णों A B C D और E को जोड़ लें, एक के बाद एक स्टैक(stack) में और फिर यदि हम शीर्ष का पता लगाते रहें तत्व और उस शीर्ष तत्व को पॉप करने पर निश्चित रूप से E अंतिम जोड़ा गया है। तो, वह पहले बाहर आ जाएगा, उससे ठीक पहले डी को जोड़ा गया है, इसलिए यह अगले बाहर आ जाएगा और इसके परिणामस्वरूप हमें वह स्ट्रिंग(string) मिलेगी जो हम यहां दिखा रहे हैं, जो EDCBA है और हम सभी इससे परिचित हैं। तो, यह तरीका है यदि आपको रिवर्स स्ट्रिंग(string) प्रोग्राम करना है, तो न केवल यह है कि आपको यह मुख्य फ़ंक्शन(function) या फ़ंक्शन(function) लिखना है जो स्ट्रिंग(string) को रिवर्स करने के लिए स्टैक(stack) का उपयोग करता है, आपको दिए गए कोड को भी लिखना होगा। बाएं स्तंभ पर जो C में परिदृश्य है एक समान परिदृश्य पोस्टफिक्स(postfix) अभिव्यक्ति का मूल्यांकन करने के लिए दिया गया है, फिर से C बाएं कॉलम में पिछले उदाहरण के समान है, जहां स्टैक(stack) का कार्यान्वयन दिया गया है और सही कॉलम पर हम दिखाते हैं कि हम इसका उपयोग वास्तव में पोस्टफिक्स(postfix) मूल्यांकन के लिए कैसे कर सकते हैं। यह केवल एल्गोरिथ्म का कोड है जिसे मैंने स्लाइड के कुछ जोड़े को समझाया; आप इसके माध्यम से जा सकते हैं और समझ सकते हैं कि वास्तव में हमारे लिए काम करेंगे। यह खोजने का संचालन करता है कि क्या कुछ ऐसा ऑपरेंड(operand) है जो इस बिंदु पर किया जाता है, यदि आप इस बिंदु पर विशेष रूप से ध्यान केंद्रित करते हैं। फिर आप देखते हैं कि हम पहचान रहे हैं कि अभिव्यक्ति में दिए गए कुछ अक्षर ऑपरेंड(operand) हैं या नहीं। तो, यह एक संख्यक माना जाता है यदि यह एक अंक है। इसलिए, इस अभिव्यक्ति में हमने पाया कि यदि प्रत्येक अंक ch है, तो यह है कि क्या यह एक अंक है एक ऑपरेंड(operand), एकल अंक ऑपरेंड(operand) और फिर हम इसे पुश(push) दे सकते हैं अन्यथा हम विचार करते हैं। हम जानते हैं कि यह एक ऑपरेटर(operator) है और उस ऑपरेटर(operator) के अनुसार यह पता चलता है और सर्वोच्च तत्वों को लेता है, उन्हें बाहर निकालता है और फिर परिणाम की गणना करता है और इसे वापस धकेलता है। उपसर्ग(postfix) अभिव्यक्ति का सामान्य कोड बहुत अधिक जटिल होगा क्योंकि आपको ऑपरेटर(operator) की योग्यता पर भी विचार करना होगा और फिर उसके आधार पर ऐसी बातें करनी होंगी जो हम सभी चार ऑपरेटरों को जानते हैं, अपेक्षित ऑपरेटर(operator) द्विआधारी हैं। तो, उन सभी ढेर यहाँ नहीं हैं। अब, चलिए चलते हैं, तो C ++ में क्या होगा। C ++ में, अच्छी बात यह है कि C ++ मानक लाइब्ररी(library) हमें रेडीमेड स्टैक(stack) प्रदान करता है। तो, उस स्टैक(stack) को बनाने के लिए या उस स्टैक(stack) का उपयोग करने के लिए, जो हमें करने की आवश्यकता है, एक नया हेडर शामिल करना है जिसे स्टैक(stack) हेडर कहा जाता है। स्टैक(stack) को त्वरित करें, जो स्टैक(stack) हेडर में परिभाषित किया गया है और फिर बस उस स्टैक(stack) ऑब्जेक्ट के कार्यों का उपयोग करना शुरू करें और हमारे पास स्टैक(stack) तैयार होगा। तो, यहाँ हम रिवर्स स्ट्रिंग(string) उदाहरण दिखा रहे हैं। फिर से दाईं ओर C प्रोग्राम है, स्टैक(stack) कोड जिसके बारे में हम पहले ही चर्चा कर चुके हैं और यहां नहीं दिखाया गया है, स्टैक(stack) को उल्टा करने के मामले में स्टैक(stack) का उपयोग केवल दिखाया गया है, और एक समकक्ष कोड पर लिखा गया है बाएं हाथ की ओर। यहां, कृपया ध्यान दें कि C ++ कोड में, हमें स्टैक(stack) कोड लिखने की आवश्यकता नहीं है, इसके बजाय हम जो करने की कोशिश कर रहे हैं, वह एक विशिष्ट हेडर शामिल है। यह हैडर में स्टैक(stack) शामिल है, इसमें स्टैक(stack) हेडर शामिल है। हमने शामिल किया है, जिसमें स्टैक(stack) परिभाषाएं शामिल हैं और यह है कि हम स्टैक(stack) को कैसे रोकते हैं। आपने इस नोटेशन को पहले देखा था जब हमने सरणी(array) के विपरीत वैक्टर के बारे में बात की थी, क्या आपने देखा है, अगर मेरे पास एक वेक्टर है तो मैं कोने ब्रैकेट के भीतर तत्व प्रकार को समान रूप से रख सकता हूं, अगर मेरे पास इस कोण कोष्ठक के भीतर एक स्टैक(stack) है तो हम यह दिखा रहे हैं कि स्टैक(stack) किस प्रकार के तत्व से बना है और स्टैक(stack) ऑब्जेक्ट्स नाम s होगा। अब, हम इस पर ध्यान देते हैं कि हम इसका उपयोग कैसे करते हैं। यहाँ C में, यदि आपको पुश(push) देना है तो हमें दो मापदंडों को पास करना होगा, हमने कहा है कि स्टैक(stack) क्या है जो पता है और जो तत्व है जिसे हम पुश(push) करना चाहते हैं। यहाँ, हम बस डॉट करते हैं; आपने इस संकेतन को सदिश के संदर्भ में भी संक्षिप्त रूप से देखा था, लेकिन हम इस बारे में और अधिक बात करेंगे, लेकिन यह एक विशिष्ट संकेतन है; इस धारणा की तरह कि हम संरचनाओं में क्या उपयोग करते हैं, लेकिन कुछ अलग तरह से व्याख्या की जाती है, s.push() जो कहता है कि स्टैक(stack) एस में, मैं पुश(push) करना चाहता हूं और मैं क्या पुश(push) देना चाहता हूं? मैं str को पुश(push) देना चाहता हूं, वह विशेष तत्व। इसी तरह, अगर मैं यहां ऐसा करना चाहता हूं, मैं खालीपन के लिए जांच करना चाहता हूं जो मैं खाली करता हूं। इसके विपरीत, यहाँ मैं s.empty() करूँगाजैसा कि हम यहाँ देख सकते हैं। तो, आप देख सकते हैं कि, कोड के संदर्भ में जो स्टैक(stack) का उपयोग करते हैं वह कोड बहुत समान है और वास्तव में जैसा कि हम समझेंगे कि कोड लिखना सरल है क्योंकि मेरे पास सी के रूप में अनावश्यक पैरामीटर नहीं हैं, जहां मुझे पास करना है पैरामीटर, हर बिंदु पर स्टैक(stack) के लिए पॉइंटर और मैं केवल फ़ंक्शन(function) कॉल के बाहर रख सकता हूं और उन मापदंडों को पास कर सकता हूं जिनकी आवश्यकता होती है जो पुश(push) के मामले में एक पैरामीटर है; बाकी के मामले में कोई पैरामीटर की आवश्यकता नहीं है। अंत में, सी में भी ध्यान दें, जबकि हम स्टैक(stack) को परिभाषित करते हैं; हमें माइनस 1 के शीर्ष मार्कर को इनिशियलाइज़ करने की भी आवश्यकता थी। यहाँ, किसी तरह सिस्टम इसका ख्याल रखता है और कंपाइलर इसका ध्यान रखता है। इसलिए, मुझे इस शीर्ष मार्कर को शुरू करने के बारे में परेशान होने की आवश्यकता नहीं है। इसलिए, अगर हम स्टैण्डर्ड लाइब्रेरी से स्टैक(stack) का उपयोग करते हैं, तो इससे निपटने के लिए हमारे पास एक नए प्रकार के डेटा(data) के हर बार स्टैक(stack) कोड को दोबारा नहीं लिखने का बहुत फायदा होता है। इन बिंदुओं को यहां नीचे दिया गया है और इसके बजाय, हमारे पास इसके लिए एक अच्छी तरह से जांच की गई रेडीमेड स्टैक(stack) उपलब्ध है। मैं सिर्फ आगे बढ़ूंगा, अगर आप अगले उदाहरण में देखें। यह फिर से वैसा ही है जैसा हमने C में किया था, लेकिन अब हम इसे C ++ में पोस्टफिक्स(postfix) एक्सप्रेशन में पोस्टफिक्स(postfix) एक्सप्रेशन मूल्यांकन के लिए कर रहे हैं और यह कोड फिर से C कोड के समान है जो हमने अपवाद को शामिल करने के लिए लिखा था स्टैक(stack) हेडर, स्टैक(stack) को इस अंकन के साथ परिभाषित करें और फिर सभी स्टैक(stack) फ़ंक्शन(function) समान रूप से थोड़े अलग प्रारूप में लिखे गए हैं, लेकिन कोड अन्यथा है, क्योंकि यह सी में थे और लाभ के साथ कि हमें कुछ भी नहीं करना है। सी स्टैक(stack) कोड कार्यान्वयन का। इसलिए, इस मॉड्यूल(module) में हमने जो दिखाया है, यदि आप C ++ में प्रोग्रामिंग(programming) कर रहे हैं, तो आपको स्टैक(stack) का उपयोग करने के मामले में एक बड़ा फायदा मिलता है। आपको स्टैक(stack) कोड को लागू करने की आवश्यकता नहीं है; आपको इस बारे में चिंतित होने की आवश्यकता नहीं है कि स्टैक(stack) के लिए कंटेनर का अधिकतम आकार क्या होना चाहिए। C ++ मानक लाइब्रेरी स्टैक(stack) स्वचालित रूप से उसका ख्याल रखता है। यह ध्यान रखता है कि उस शीर्ष को कैसे शुरू किया जाए और इसका उपयोग किसी भी प्रकार के तत्व के लिए किया जा सकता है, जो मुझे स्टैक(stack) के लिए चाहिए, और पूरे C ++ प्रोग्रामिंग(programming) और मानक लाइब्ररी(library) का बहुत ही रोचक और रोमांचक हिस्सा यह है कि कहानी सिर्फ इसके साथ नहीं रुकती है ढेर। सभी सामान्य डेटा(data) संरचनाएं जो अक्सर कतार(queue) की तरह आवश्यक होती हैं, जो पहले-पहले-बाहर होती है; queque, जो डबल एंडेड कतार(queue) है, जहां आप अनुक्रम के दोनों सिरों पर जोड़ और हटा सकते हैं। सूचि; एकल लिंक की गई सूची, नक्शा, जो नाम मान जोड़ी की तरह है; सेट, जहां ऑर्डर देना महत्वपूर्ण नहीं है, आप बस उस में यूनियन चौराहा कर सकते हैं। ये सभी डेटा(data) संरचनाएं C ++ मानक लाइब्ररी(library) में रेडीमेड उपलब्ध हैं। इसलिए, जैसा कि हम प्रोग्रामिंग(programming) भाषा की विस्तृत बारीकियों को समझने से पहले ही C ++ में प्रोग्रामिंग(programming) शुरू कर देते हैं, हम बार-बार C ++ मानक लाइब्ररी(library) पर एक नज़र डालना चाहते हैं और इन सभी डेटा(data) संरचनाओं का उपयोग करने वाले प्रोग्राम लिखते हैं और हमारी प्रोग्रामिंग(programming) को आसान बनाते हैं और अधिक मजबूत उपयोग करने के लिए।