सी ++ सबसे शक्तिशाली और डराने वाली प्रोग्रामिंग भाषाओं में से एक है जिसका सामना आप एक शुरुआत के रूप में कर सकते हैं। कारण काफी सीधा है। वांछित आउटपुट प्राप्त करने के लिए यह बहुत सारे कोड की मांग करता है। मानक टेम्पलेट पुस्तकालय, या एसटीएल, इस पहेली को हल करने में आपकी सहायता कर सकता है।
छँटाई और खोज जैसे कार्यों के लिए कोड लिखते समय खर्च किए गए समय और प्रयास को ध्यान में रखते हुए, एसटीएल आपको इन सभी कार्यों को कोड की एक पंक्ति के साथ करने में मदद कर सकता है। समस्या-समाधान और तकनीकी साक्षात्कार की तैयारी के लिए यह पुस्तकालय अत्यधिक उपयोगी हो सकता है।
मानक टेम्पलेट लाइब्रेरी क्या है?
स्टैंडर्ड टेम्प्लेट लाइब्रेरी, या एसटीएल, एक सी ++ लाइब्रेरी है जिसमें प्रीबिल्ट फ़ंक्शंस और कंटेनर होते हैं। इसमें सामान्य डेटा संरचनाओं जैसे वैक्टर, स्टैक्स, क्यू और कुछ आसान एल्गोरिथम फ़ंक्शंस जैसे बाइनरी सर्च के लिए कुछ प्रमुख टेम्प्लेट क्लासेस शामिल हैं ताकि प्रोग्रामिंग को आसान बनाया जा सके।
C++ में मानक टेम्पलेट लाइब्रेरी में चार घटक होते हैं:
- एल्गोरिदम
- कंटेनरों
- कार्यों
- इटरेटर्स
आइए एल्गोरिदम और कंटेनरों को अधिक गहराई से देखें, क्योंकि वे एसटीएल के सबसे अधिक उपयोग किए जाने वाले घटक हैं।
एसटीएल. में एल्गोरिदम
हेडर फ़ाइल एसटीएल का एक हिस्सा है जिसमें कई एल्गोरिथम फ़ंक्शन होते हैं जिनका उपयोग मैन्युअल रूप से कोडिंग के बजाय किया जा सकता है। शामिल कुछ एल्गोरिदम बाइनरी सर्च, सॉर्टिंग और रिवर्स हैं, जो बेहद उपयोगी हैं।
आरंभ करने के लिए, आपको आयात करने की आवश्यकता है आपकी सी ++ फ़ाइल में शीर्षलेख। वाक्यविन्यास इस प्रकार है:
#शामिल
आगामी विधियों के लिए, एक उदाहरण के रूप में {6, 2, 9, 1, 4} के मानों के साथ एक सरणी चर पर विचार करें।
int arr[] = {6, 2, 9, 1, 4};
क्रमबद्ध करें ()
क्रमबद्ध करें () फ़ंक्शन आपको निर्दिष्ट डेटा संरचना के अंदर सभी तत्वों को आरोही क्रम में क्रमबद्ध करने में मदद करता है। यह फ़ंक्शन दो पैरामीटर लेता है: प्रारंभिक पुनरावर्तक और अंतिम पुनरावर्तक।
सम्बंधित: मर्ज सॉर्ट एल्गोरिथम का परिचय Introduction
वाक्य - विन्यास:
सॉर्ट (start_iterator, end_iterator);
यहाँ एक त्वरित उदाहरण है:
सॉर्ट (गिरफ्तारी, गिरफ्तारी +5);
के लिए (इंट आई = 0; मैं <5; मैं++) {
cout << गिरफ्तार [i] << "";
}
आउटपुट:
1 2 4 6 9
उलटना()
उलटना() फ़ंक्शन निर्दिष्ट डेटा संरचना में तत्वों के क्रम को उलट देता है। यह दो पैरामीटर स्वीकार करता है: प्रारंभिक पुनरावर्तक और अंतिम पुनरावर्तक।
वाक्य - विन्यास:
रिवर्स (start_iterator, end_iterator);
यहाँ उपरोक्त विधि के लिए एक संक्षिप्त उदाहरण दिया गया है:
रिवर्स (गिरफ्तारी, गिरफ्तारी +5);
के लिए (इंट आई = 0; मैं <5; मैं++) {
cout << गिरफ्तार [i] << "";
}
आउटपुट:
4 1 9 2 6
*min_element() और *max_element()
कार्य *max_element () तथा *min_element() निर्दिष्ट डेटा संरचना के अंदर क्रमशः अधिकतम और न्यूनतम मान लौटाएं। ये दोनों कार्य दो तर्क स्वीकार करते हैं: प्रारंभ पुनरावर्तक और अंत पुनरावर्तक।
वाक्य - विन्यास:
*max_element (start_iterator, end_iterator);
*min_element (start_iterator, end_iterator);
आइए जानें कि इन कार्यों को उदाहरण सरणी पर कॉल करने पर कौन से मूल्य वापस आते हैं:
cout << *max_element (गिरफ्तारी, गिरफ्तारी+5) << endl;
cout << *min_element (गिरफ्तारी, गिरफ्तारी+5) << endl;
आउटपुट:
9
1
द्विआधारी खोज()
द्विआधारी खोज() विधि का उपयोग यह पता लगाने के लिए किया जाता है कि निर्दिष्ट मान डेटा संरचना के अंदर मौजूद है या नहीं। यह तीन तर्कों को स्वीकार करता है: प्रारंभिक पुनरावर्तक, अंतिम पुनरावर्तक, और वह मान जिसे आप खोजना चाहते हैं।
बाइनरी सर्च केवल सॉर्ट किए गए डेटा स्ट्रक्चर पर काम करता है। इसलिए, आपको कॉल करने की आवश्यकता होगी क्रमबद्ध करें () विधि पहले द्विआधारी खोज() तरीका।
वाक्य - विन्यास:
बाइनरी_सर्च (start_iterator, end_iterator, value_to_find)
यहाँ इस विधि का एक प्रदर्शन है:
सॉर्ट (गिरफ्तारी, गिरफ्तारी +5);
बाइनरी_सर्च (गिरफ्तारी, गिरफ्तारी +5, 2)? cout << "तत्व मिला": cout << "तत्व नहीं मिला";
बाइनरी_सर्च (गिरफ्तारी, गिरफ्तारी +5, 7)? cout << "तत्व मिला": cout << "तत्व नहीं मिला";
आउटपुट:
तत्व मिला
तत्व नहीं मिला
गिनती ()
गिनती () विधि डेटा संरचना के अंदर निर्दिष्ट मान की घटना की गिनती देता है। इसमें तीन तर्क होते हैं: प्रारंभ पुनरावर्तक, अंत पुनरावर्तक, और गिनने का मान।
वाक्य - विन्यास:
गिनती (start_iterator, end_iterator, value_to_count);
यहाँ इस विधि का एक उदाहरण है:
cout << गिनती (गिरफ्तारी, गिरफ्तारी +5, 2) << एंडल;
आउटपुट:
1
एसटीएल. में कंटेनर
कंटेनर डेटा संरचनाएं हैं जो वस्तुओं और डेटा को संग्रहीत करती हैं। वेक्टर, सूचियां, ढेर, कतार, सेट और मानचित्र कुछ ऐसे उदाहरण हैं जो निर्दिष्ट आदिम डेटाटाइप के अनुसार उनमें डेटा संग्रहीत करते हैं। आप इन कंटेनरों का उपयोग उनके संबंधित शीर्षलेखों को C++ फ़ाइल में आयात करके कर सकते हैं।
कंटेनर वैरिएबल को इनिशियलाइज़ करते समय, आपको आदिम डेटा का उल्लेख करना होगा जैसे कि पूर्णांक, चारो, तार के अंदर <> कोष्ठक।
आइए इनमें से कुछ कंटेनरों को अधिक विस्तार से देखें:
वेक्टर
वेक्टर गतिशील सरणियाँ हैं जो काम करने के लिए आकार बदलने योग्य और लचीली हैं। जब आप वेक्टर से कोई तत्व सम्मिलित करते हैं या हटाते हैं, तो यह स्वचालित रूप से वेक्टर के आकार को समायोजित करता है। यह के समान है ArrayList डेटा संरचना जावा में।
वाक्य - विन्यास:
#शामिल
वेक्टर चर का नाम;
यहाँ कुछ महत्वपूर्ण वेक्टर विधियाँ हैं:
- पुश_बैक (मान): यह विधि डेटा को वेक्टर में जोड़ती है।
- पॉप_बैक (): यह विधि वेक्टर से अंतिम तत्व को हटा देती है।
- सम्मिलित करें (सूचकांक, मान): यह विधि निर्दिष्ट स्थान पर तत्व से पहले नए तत्व सम्मिलित करती है।
- आकार (): यह विधि वेक्टर का आकार लौटाती है।
- खाली (): यह विधि जांचती है कि वेक्टर खाली है या नहीं।
- सामने (): यह विधि वेक्टर का पहला मान लौटाती है।
- वापस(): बैक विधि वेक्टर का अंतिम मान लौटाती है।
- पर (सूचकांक): यह विधि निर्दिष्ट स्थान पर मान लौटाती है।
- मिटाना (सूचकांक): इरेज़ विधि दिए गए इंडेक्स से तत्वों को हटा देती है।
- स्पष्ट(): यह विधि वेक्टर में सभी आइटम्स को साफ़ करती है।
वेक्टर वी = {23, 12, 56, 10};
वी.पुश_बैक (5);
वी.पुश_बैक (25);
v.pop_back ();
ऑटो i = v.insert (v.begin() + 1, 7);
cout << "दिए गए वेक्टर का आकार" << v.size() << endl;
अगर (v. खाली ()) {
cout << "वेक्टर खाली है" << endl;
} अन्य {
cout << "वेक्टर खाली नहीं है" << endl;
}
cout << "तत्व पहली स्थिति में है" << v.front() << endl;
cout << "अंतिम स्थिति में तत्व है" << v.back() << endl;
cout << "दिए गए स्थान पर तत्व है" << v.at (4) << endl;
v.erase (v.begin() + 1);
के लिए (इंट आई = 0; मैं कोउट << वी [i] << "";
}
आउटपुट:
दिए गए सदिश का आकार 6
वेक्टर खाली नहीं है
पहले स्थान पर तत्व 23. है
अंतिम स्थान पर तत्व 5. है
दिए गए स्थान पर तत्व 10. है
23 12 56 10 5
पंक्ति
कतार डेटा संरचना में, तत्वों को पीछे से डाला जाता है और सामने से हटा दिया जाता है। इसलिए, यह फीफो ("फर्स्ट इन, फर्स्ट आउट") दृष्टिकोण का अनुसरण करता है।
वाक्य - विन्यास:
#शामिल
पंक्ति चर का नाम;
यहाँ कुछ महत्वपूर्ण कतार विधियाँ हैं:
- धक्का (मान)): यह विधि कतार में तत्वों को जोड़ती है।
- पॉप(): यह विधि कतार के पहले तत्व को हटा देती है।
- आकार (): यह विधि कतार का आकार लौटाती है।
- सामने (): यह विधि कतार का पहला तत्व लौटाती है।
- वापस(): यह विधि कतार का अंतिम तत्व लौटाती है।
कतार क्यू;
क्यू.पुश (30);
क्यू.पुश (40);
क्यू.पुश (50);
क्यू.पुश (60);
क्यू.पुश (70);
cout << "पहला तत्व है" << q.front() << endl;
cout << "अंतिम तत्व है" << q.back() << endl;
cout << "कतार का आकार है" << q.size() << endl;
क्यू.पॉप ();
cout << "कतार के सभी तत्वों को प्रिंट करना" << endl;
जबकि (!q.खाली ()) {
cout << q.front () << "";
क्यू.पॉप ();
}
आउटपुट:
पहला तत्व 30. है
अंतिम तत्व 70. है
कतार का आकार 5. है
कतार के सभी तत्वों को प्रिंट करना
40 50 60 70
ढेर
स्टैक कंटेनर LIFO पद्धति पर काम करते हैं। LIFO का मतलब "लास्ट इन, फर्स्ट आउट" है। डेटा को एक ही छोर से धकेला और पॉप किया जाता है।
वाक्य - विन्यास:
#शामिल
ढेर चर का नाम;
यहाँ कुछ महत्वपूर्ण स्टैक विधियाँ हैं:
- धक्का (मान)): यह विधि तत्व को स्टैक में धकेलती है।
- पॉप(): यह विधि स्टैक के शीर्ष तत्व को हटा देती है।
- ऊपर(): यह विधि स्टैक में दर्ज अंतिम तत्व का मान लौटाती है।
- आकार (): यह विधि स्टैक का आकार लौटाती है।
- खाली (): यह विधि जाँचती है कि स्टैक खाली है या नहीं।
स्टैक एस;
एस.पुश (30);
एस.पुश (40);
एस.पुश (50);
एस.पुश (60);
cout << "स्टैक के शीर्ष में शामिल हैं" << s.top() << endl;
एस.पॉप ();
cout << "पॉप ऑपरेशन करने के बाद स्टैक का शीर्ष:" << s.top() << endl;
cout << "स्टैक के सभी तत्वों को प्रिंट करना" << endl;
जबकि (!s.खाली ()) {
cout << s.top () << "";
एस.पॉप ();
}
आउटपुट:
ढेर के शीर्ष में 60. होता है
पॉप ऑपरेशन करने के बाद स्टैक का शीर्ष: 50
स्टैक के सभी तत्वों को प्रिंट करना
50 40 30
सेट
सेट कंटेनर का उपयोग अद्वितीय मान रखने के लिए किया जाता है, और सेट में डालने के बाद तत्व के मान को बदला नहीं जा सकता है। सेट में सभी तत्वों को क्रमबद्ध तरीके से संग्रहीत किया जाता है। सेट कंटेनर के समान है पायथन में डेटा संरचना सेट करें.
वाक्य - विन्यास:
#शामिल
सेट चर का नाम;
यहां कुछ महत्वपूर्ण सेट विधियां दी गई हैं:
- डालें (मान): यह विधि सेट में तत्वों को सम्मिलित करती है।
- शुरू(): यह विधि इटरेटर को सेट के पहले तत्व में लौटाती है।
- समाप्त(): यह विधि इटरेटर को सेट के अंतिम तत्व में लौटाती है।
- आकार (): यह विधि सेट का आकार लौटाती है।
- खाली (): यह विधि जांचती है कि सेट खाली है या नहीं।
- खोजें (मूल्य): यह विधि पैरामीटर में पारित तत्व को इटरेटर लौटाती है। यदि तत्व नहीं मिला है, तो यह फ़ंक्शन इटरेटर को सेट के अंत में लौटाता है।
- मिटाना (मान): इस विधि ने निर्दिष्ट तत्व को सेट से हटा दिया।
सेट एस;
एस.इन्सर्ट (20);
एस.इन्सर्ट (30);
एस.इन्सर्ट (40);
एस.इन्सर्ट (50);
एस.इन्सर्ट (60);
एस.इन्सर्ट (60);
एस.इन्सर्ट (60);
ऑटो i = s.begin ();
cout << "पहली स्थिति में तत्व" << * i << endl;
cout << "सेट का आकार" << s.size() << endl;
s.find (20) != s.end ()? cout << "तत्व मिला" << endl: cout << "तत्व नहीं मिला" << endl;
सेरेज़ (30);
cout << "सभी तत्वों को प्रिंट करना" << endl;
के लिए (ऑटो i = s.begin (); मैं! = अंत (); मैं++) {
कोउट << * मैं << "";
}
आउटपुट:
पहले स्थान पर तत्व 20
सेट का आकार 5
तत्व मिला
सभी तत्वों को प्रिंट करना
20 40 50 60
सी ++ को कठिन नहीं होना चाहिए
हर दूसरे कौशल की तरह, एसटीएल का अधिकतम लाभ उठाने के लिए अभ्यास आवश्यक है। ये कंटेनर और एल्गोरिदम आपको बहुत समय बचाने में मदद कर सकते हैं और उपयोग में आसान हैं। ऊपर दिखाए गए उदाहरणों का अभ्यास करके शुरू करें और आप अंततः इसे अपनी परियोजनाओं में भी उपयोग करना शुरू कर देंगे।
हालाँकि, यदि आप पहली बार C++ सीख रहे हैं, तो STL को समझने के लिए आगे बढ़ने से पहले मूल बातें सीखकर शुरुआत करें।
सी ++ सीखना चाहते हैं? यहां शुरुआती और अनुभव प्रोग्रामर के लिए सी ++ के लिए सबसे अच्छी वेबसाइटें और ऑनलाइन पाठ्यक्रम हैं।
आगे पढ़िए
- प्रोग्रामिंग
- कोडिंग ट्यूटोरियल
- कार्यात्मक प्रोग्रामिंग

नितिन एक शौकीन चावला सॉफ्टवेयर डेवलपर और एक कंप्यूटर इंजीनियरिंग छात्र है जो जावास्क्रिप्ट तकनीकों का उपयोग करके वेब एप्लिकेशन विकसित कर रहा है। वह एक फ्रीलांस वेब डेवलपर के रूप में काम करता है और अपने खाली समय में लिनक्स और प्रोग्रामिंग के लिए लिखना पसंद करता है।
हमारे न्यूज़लेटर की सदस्यता
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
एक और क़दम…!
कृपया उस ईमेल में अपने ईमेल पते की पुष्टि करें जिसे हमने अभी आपको भेजा है।