ST ++ in c ++: वह सब कुछ जो आपको जानना आवश्यक है



यह लेख आपको C ++ में STL का विस्तृत और व्यापक ज्ञान प्रदान करेगा और साथ ही आपको विभिन्न कंटेनरों के बारे में एक विचार देगा।

स्टैण्डर्ड टेम्प्लेट लाइब्रेरी (STL) C ++ टेम्प्लेट क्लासेस का एक सेट है जो सामान्य प्रोग्रामिंग डेटा स्ट्रक्चर्स और फ़ंक्शंस जैसे लिस्ट्स, स्टैक, एरेज़ आदि प्रदान करने के लिए है। इस STL में C ++ आर्टिकल में हम निम्नलिखित बिंदुओं पर चर्चा करेंगे:

C ++ में STL पर इस लेख के साथ आगे बढ़ना





C ++ टेम्प्लेट

C ++ हमें टेम्प्लेट की एक सुविधा प्रदान करता है जो फ़ंक्शन और कक्षाओं को जेनेरिक प्रकारों के साथ संचालित करने की अनुमति देता है। यह किसी फ़ंक्शन या वर्ग के पुन: प्रयोज्य की अनुमति देता है और इसे प्रत्येक के लिए फिर से लिखे बिना कई अलग-अलग डेटा प्रकारों पर काम करने की अनुमति देता है।

C ++ में STL पर इस लेख के साथ आगे बढ़ना



सामान्य कार्य और एसटीएल

प्रोग्रामिंग करते समय कई बार ऐसे कार्यों को बनाने की आवश्यकता होती है जो समान संचालन करते हैं लेकिन विभिन्न डेटा प्रकारों के साथ काम करते हैं। तो इस समस्या को दूर करने के लिए C ++ कई कार्यों के बजाय एकल जेनेरिक फ़ंक्शन बनाने की सुविधा प्रदान करता है जो टेम्पलेट पैरामीटर का उपयोग करके विभिन्न डेटा प्रकार के साथ काम कर सकते हैं। इन जीनिक वर्गों और कार्यों के संग्रह को मानक खाका पुस्तकालय (एसटीएल) कहा जाता है।

STL के घटक जो अब मानक C ++ लाइब्रेरी का हिस्सा हैं, नामस्थान std में परिभाषित किए गए हैं। इसलिए, हमें अपने प्रोग्राम में उन्हें आयात करने के लिए नामस्थान निर्देश का उपयोग करना चाहिए।

वाक्य - विन्यास:



नेमस्पेस एसटीडी का उपयोग करना

एसटीएल के तीन घटक हैं

  • कंटेनर

  • एल्गोरिदम

  • Iterators

ये तीन घटक विभिन्न प्रकार के प्रोग्रामिंग समाधानों को सहायता प्रदान करने के लिए तालमेल में एक दूसरे के साथ मिलकर काम करते हैं। एल्गोरिथ्म कंटेनर में संग्रहीत ऑपरेशन करने के लिए पुनरावृत्तियों को नियोजित करता है।

एक कंटेनर एक ऑब्जेक्ट है जो मेमोरी में डेटा को एक संगठित फैशन में संग्रहीत करता है। STL में कंटेनरों को टेम्पलेट कक्षाओं द्वारा कार्यान्वित किया जाता है और इसलिए विभिन्न प्रकार के डेटा को रखने के लिए आसानी से संशोधित और अनुकूलित किया जा सकता है।

एक प्रक्रिया जो कंटेनरों में निहित डेटा को संसाधित करने के लिए उपयोग की जाती है, एक एल्गोरिथ्म के रूप में परिभाषित की जाती है। एसटीएल में कई अलग-अलग प्रकार के एल्गोरिदम शामिल हैं, जैसे शुरुआती कार्यों को समर्थन प्रदान करना, खोज करना, कॉपी करना, सॉर्ट करना, और मर्ज करना, कॉपी करना, सॉर्ट करना और मर्ज करना। टेम्पलेट फ़ंक्शन द्वारा एल्गोरिदम लागू किया जाता है।

एक पुनरावृत्त को एक वस्तु के रूप में परिभाषित किया जा सकता है जो एक कंटेनर में एक तत्व को इंगित करता है। कंटेनरों की सामग्री के माध्यम से स्थानांतरित करने के लिए Iterators का उपयोग किया जा सकता है। इटरेटर को पॉइंटर्स की तरह ही हैंडल किया जाता है। हम उन्हें बढ़ा या घटा सकते हैं। Iterators एल्गोरिदम को कंटेनरों से जोड़ते हैं और कंटेनरों में संग्रहीत डेटा के हेरफेर में महत्वपूर्ण भूमिका निभाते हैं।

Container-STL-in-C++

C ++ में STL पर इस लेख के साथ आगे बढ़ना

कंटेनर

एसटीएल दस कंटेनरों को परिभाषित करता है जिन्हें तीन श्रेणियों में बांटा गया है।

कंटेनर

विवरण

शीर्ष लेख फ़ाइल

सूत्रधार

वेक्टर

इसे एक गतिशील सरणी के रूप में परिभाषित किया जा सकता है। यह किसी भी तत्व तक सीधी पहुंच की अनुमति देता है।

रैंडम एक्सेस

सूची

यह एक द्विदिश रैखिक सूची है। यह कहीं भी सम्मिलन और विलोपन की अनुमति देता है

अप्रत्यक्ष

तथा

यह दोतरफा कतार है। दोनों सिरों पर सम्मिलन और विलोपन की अनुमति देता है। किसी भी तत्व के लिए सीधी पहुँच की अनुमति देता है।

रैंडम एक्सेस

सेट

यह अद्वितीय सेटों के भंडारण के लिए एक सहयोगी कंटेनर है। तेजी से देखने की अनुमति देता है।

अप्रत्यक्ष

मल्टीसेट

यह गैर-विशिष्ट सेटों के भंडारण के लिए एक सहयोगी कंटेनर है।

अप्रत्यक्ष

नक्शा

यह अद्वितीय कुंजी / मूल्य जोड़े के भंडारण के लिए एक सहयोगी कंटेनर है। प्रत्येक कुंजी केवल एक मान से संबद्ध है।

अप्रत्यक्ष

बहुमूत्र

यह कुंजी / मान को संचय करने के लिए एक सहयोगी कंटेनर है जिसमें एक कुंजी एक से अधिक मूल्य (एक-से-कई मानचित्रण) के साथ जुड़ी हो सकती है। यह एक कुंजी-आधारित लुकअप की अनुमति देता है।

अप्रत्यक्ष

ढेर

एक मानक स्टैक अंतिम-इन-प्रथम-आउट (LIFO) के बाद आता है

कोई यात्रा करनेवाला नहीं

कतार

एक मानक कतार पहले-पहले-बाहर (FIFO) के बाद आती है

कोई यात्रा करनेवाला नहीं

प्राथमिकता कतार

जावा में कैसे जोड़ें

पहला तत्व हमेशा सर्वोच्च प्राथमिकता वाला तत्व होता है

कोई यात्रा करनेवाला नहीं

अनुक्रम कंटेनर

अनुक्रम कंटेनर एक रैखिक क्रम में तत्वों को संग्रहीत करते हैं। सभी तत्व लाइन के साथ अपनी स्थिति से एक दूसरे से संबंधित हैं। वे तत्व के सम्मिलन की अनुमति देते हैं और उनमें से सभी उन पर कई कार्यों का समर्थन करते हैं।

एसटीएल तीन प्रकार के अनुक्रम तत्व प्रदान करता है:

  • वेक्टर
  • सूची
  • तथा

सहयोगी कंटेनर:

वे इस तरह से डिज़ाइन किए गए हैं कि वे कुंजी का उपयोग करके तत्वों तक सीधी पहुंच का समर्थन कर सकते हैं। वे अनुक्रमिक नहीं हैं। चार प्रकार के होते हैं

सहयोगी कंटेनर:

  1. सेट
  2. मल्टीसेट
  3. नक्शा
  4. मल्टीमप

उपरोक्त सभी कंटेनर पेड़ नामक एक संरचना में डेटा संग्रहीत करते हैं जो तेजी से सुविधा प्रदान करता है

अनुक्रमिक के विपरीत खोज, विलोपन और सम्मिलन। कंटेनर सेट या मल्टीसेट विभिन्न वस्तुओं को संग्रहीत कर सकते हैं और कुंजी के रूप में मूल्यों का उपयोग करके उन्हें हेरफेर करने के लिए संचालन प्रदान कर सकते हैं।

और नक्शा या मल्टीमैप का उपयोग जोड़ी में वस्तुओं को संग्रहीत करने के लिए किया जाता है, एक को कुंजी और अन्य कहा जाता है

मूल्य कहा जाता है।

व्युत्पन्न कंटेनर:

एसटीएल तीन व्युत्पन्न कंटेनरों को प्रदान करता है, जैसे, स्टैक, कतार और प्राथमिकता_के। इन्हें कंटेनर एडेप्टर के रूप में भी जाना जाता है।

व्युत्पन्न कंटेनरों के तीन प्रकार हैं:

1. स्टैक

2. क्यू

३.प्यारत_करना

ढेर, कतार और प्राथमिकता कतार आसानी से विभिन्न अनुक्रम कंटेनरों से बनाई जा सकती है। व्युत्पन्न कंटेनर पुनरावृत्तियों का समर्थन नहीं करते हैं और इसलिए हम उन्हें डेटा हेरफेर के लिए उपयोग नहीं कर सकते हैं। हालाँकि, वे दो सदस्य फ़ंक्शन पॉप () और पुश () को हटाने और संचालन सम्मिलित करने के लिए समर्थन करते हैं।

C ++ में STL पर इस लेख के साथ आगे बढ़ना

एल्गोरिदम

एल्गोरिदम ऐसे फ़ंक्शंस हैं, जो आम तौर पर अपनी सामग्री के प्रसंस्करण के लिए विभिन्न प्रकार के कंटेनरों में उपयोग किए जा सकते हैं। यद्यपि प्रत्येक कंटेनर अपने मूल संचालन के लिए कार्य प्रदान करता है, लेकिन एसटीएल अधिक विस्तारित या जटिल संचालन का समर्थन करने के लिए साठ से अधिक मानक एल्गोरिदम प्रदान करता है। मानक एल्गोरिदम हमें एक ही समय में दो अलग-अलग प्रकार के कंटेनरों के साथ काम करने की भी अनुमति देता है।

एसटीएल एल्गोरिदम पुन: प्रयोज्यता के दर्शन को सुदृढ़ करता है। इन एल्गोरिदम का उपयोग करके, प्रोग्रामर बहुत समय और प्रयास बचा सकते हैं। एसटीएल एल्गोरिदम तक पहुंच के लिए, हमें अपने कार्यक्रम में शामिल करना चाहिए।

एसटीएल एल्गोरिदम, उनके द्वारा किए जाने वाले संचालन की प्रकृति के आधार पर, निम्नानुसार वर्गीकृत किया जा सकता है:

  • नॉन-यूटिंग एल्गोरिदम

  • एल्गोरिदम को म्यूट करना

  • छँटाई एल्गोरिदम

  • एल्गोरिदम सेट करें

  • संबंधपरक एल्गोरिथ्म

C ++ में STL पर इस लेख के साथ आगे बढ़ना

Iterators:

Iterators पॉइंटर्स की तरह काम करते हैं और कंटेनर के तत्वों को एक्सेस करने के लिए उपयोग किए जाते हैं। हम कंटेनर की सामग्री के माध्यम से स्थानांतरित करने के लिए पुनरावृत्तियों का उपयोग करते हैं। इटरेटर को पॉइंटर्स की तरह ही हैंडल किया जाता है। हम अपनी आवश्यकताओं के अनुसार उन्हें बढ़ा या घटा सकते हैं। Iterators कंटेनरों को एल्गोरिदम से जोड़ते हैं और कंटेनरों में संग्रहीत डेटा के हेरफेर में महत्वपूर्ण भूमिका निभाते हैं। वे अक्सर एक तत्व से दूसरे तक गुजरने के लिए उपयोग किए जाते हैं, इस प्रक्रिया को कंटेनर के माध्यम से पुनरावृत्ति कहा जाता है।

पुनरावृत्तियों के पाँच प्रकार हैं:

१.इन्द्रिय

२.ओतपुत

3. ठीक है

4. द्विदिश

5. आयामी

सूत्रधार

पहुंच विधि

आंदोलन की दिशा

I / O क्षमता

रिमार्क

इनपुट

रैखिक

आगे से ही

केवल पढ़ने के लिए

बचाया नहीं जा सकता

आउटपुट

रैखिक

आगे से ही

ही लिखो

बचाया नहीं जा सकता

आगे

रैखिक

आगे से ही

पढ़ना लिखना

बचाया जा सकता है

अप्रत्यक्ष

रैखिक

आगे और पिछे

पढ़ना लिखना

बचाया जा सकता है

यादृच्छिक

यादृच्छिक

आगे और पिछे

पढ़ना लिखना

बचाया जा सकता है

विभिन्न प्रकार के पुनरावृत्तियों का उपयोग विभिन्न प्रकार के कंटेनरों के साथ किया जाना चाहिए जैसे कि केवल

अनुक्रम और साहचर्य कंटेनरों को पुनरावृत्तियों के माध्यम से यात्रा करने की अनुमति है। प्रत्येक प्रकार के पुनरावृत्तियों का उपयोग कुछ कार्यों को करने के लिए किया जाता है। इनपुट और आउटपुट पुनरावृत्तियों कम से कम कार्यों का समर्थन करते हैं। उनका उपयोग केवल एक कंटेनर में गुजरने के लिए किया जा सकता है। आगे चलने वाले पुनरावृत्त इनपुट और आउटपुट पुनरावृत्तियों के सभी कार्यों का समर्थन करते हैं और कंटेनर में अपनी स्थिति भी बनाए रखते हैं। सभी अग्रगामी संचालन का समर्थन करते हुए एक द्विदिश चलनेवाला, कंटेनर में पिछड़े दिशा में आगे बढ़ने की क्षमता प्रदान करता है।

इस प्रकार हम इस लेख के अंत में 'C ++ में STL' पर आए हैं। आप और अधिक जानने के लिए चाहते हैं, तो बाहर की जाँच करें Edureka, एक विश्वसनीय ऑनलाइन शिक्षण कंपनी है। एडुर्का के जावा जे 2 ईई और एसओए प्रशिक्षण और प्रमाणन पाठ्यक्रम आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करने के लिए डिज़ाइन किया गया है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस ब्लॉग के टिप्पणी अनुभाग में इसका उल्लेख करें और हम जल्द से जल्द आपके पास वापस आ जाएंगे।