स्टैंडर्ड टेम्पलेट लाइब्रेरी (STL) C++ प्रोग्रामिंग भाषा के लिए एक सॉफ्टवेयर लाइब्रेरी है जिसने C++ स्टैंडर्ड लाइब्रेरी के कई हिस्सों को प्रभावित किया। यह चार कंपोनेंट्स प्रदान करती है जिन्हें एल्गोरिदम, कंटेनर्स, फंक्शन्स, और इटरेटर्स कहा जाता है। ध्यान दें कि "STL" या "स्टैंडर्ड टेम्पलेट लाइब्रेरी" शब्द ISO 14882 C++ स्टैंडर्ड में कहीं भी नहीं आता। इसलिए C++ स्टैंडर्ड लाइब्रेरी को STL कहना गलत है, यानी STL और C++ स्टैंडर्ड लाइब्रेरी दो अलग-अलग चीजें हैं जहां पूर्व बाद का सबसेट है।
STL में शामिल हैं
कंटेनर्स
STL में सीक्वेंस कंटेनर्स और एसोसिएटिव कंटेनर्स होते हैं। कंटेनर्स वे ऑब्जेक्ट्स हैं जो डेटा स्टोर करते हैं। स्टैंडर्ड सीक्वेंस कंटेनर्स में वेक्टर, डेक, और लिस्ट शामिल हैं। स्टैंडर्ड एसोसिएटिव कंटेनर्स हैं सेट, मल्टीसेट, मैप, मल्टीमैप, हैश_सेट, हैश_मैप, हैश_मल्टीसेट, और हैश_मल्टीमैप। कंटेनर एडाप्टर्स क्यू, प्रायोरिटी_क्यू, और स्टैक भी हैं, जो एक विशिष्ट इंटरफेस वाले कंटेनर्स हैं, जो कार्यान्वयन के रूप में अन्य कंटेनर्स का उपयोग करते हैं।
इटरेटर्स
एक इटरेटर एक ऑब्जेक्ट है जो प्रोग्रामर को एक कंटेनर को पार करने में सक्षम बनाता है। STL पांच अलग-अलग प्रकार के इटरेटर्स को लागू करता है: इनपुट (मानों के अनुक्रम को पढ़ने के लिए उपयोग किया जाता है), आउटपुट (मानों के अनुक्रम को लिखने के लिए उपयोग किया जाता है), फॉरवर्ड (जिसे पढ़ा, लिखा जा सकता है, और आगे बढ़ सकता है), बाइडायरेक्शनल (फॉरवर्ड इटरेटर्स की तरह, लेकिन पीछे भी जा सकता है) और रैंडम एक्सेस (एक ऑपरेशन में किसी भी संख्या में चरणों में स्वतंत्र रूप से आगे बढ़ सकता है)। इटरेटर्स वह प्रमुख विशेषता है जो STL की जनरैलिटी की अनुमति देती है।
एल्गोरिदम
STL में एल्गोरिदम फ़ंक्शन्स का एक संग्रह है जिसे विशेष रूप से एलिमेंट्स की रेंज पर उपयोग करने के लिए डिज़ाइन किया गया है। एक रेंज ऑब्जेक्ट्स का कोई भी अनुक्रम है जिसे इटरेटर्स या पॉइंटर्स के माध्यम से एक्सेस किया जा सकता है, जैसे कि एक सरणी या STL कंटेनर्स के कुछ इंस्टेंस। STL में एल्गोरिदम के उदाहरण: sort (रेंज में एलिमेंट्स को सॉर्ट करें), binary_search (जांचें कि क्या कोई मान सॉर्टेड अनुक्रम में मौजूद है), min_element (रेंज में सबसे छोटा एलिमेंट लौटाएं), आदि। ध्यान दें कि ये सभी एल्गोरिदम टेम्पलेट के रूप में स्वीकृत किसी भी डेटा टाइप पर लागू किए जा सकते हैं।
C++ प्रोग्रामिंग भाषा में, C++ स्टैंडर्ड लाइब्रेरी क्लासेस और फ़ंक्शन्स का एक संग्रह है, जो कोर भाषा में लिखे गए हैं और C++ ISO स्टैंडर्ड का हिस्सा हैं। C++ स्टैंडर्ड लाइब्रेरी कई जेनेरिक कंटेनर्स, इन कंटेनर्स का उपयोग और हेरफेर करने के लिए फ़ंक्शन्स, फ़ंक्शन ऑब्जेक्ट्स, जेनेरिक स्ट्रिंग्स और स्ट्रीम्स (इंटरैक्टिव और फाइल I/O सहित), कुछ भाषा सुविधाओं के लिए सपोर्ट, और रोजमर्रा के कार्यों के लिए फ़ंक्शन्स जैसे किसी संख्या का वर्गमूल ढूंढना प्रदान करती है। निम्नलिखित C++ स्टैंडर्ड लाइब्रेरी की कुछ विशेषताएं हैं:
स्ट्रीम्स
इन लाइब्रेरीज का उपयोग C++ में उपलब्ध विभिन्न प्रकार के स्ट्रीम्स से निपटने के लिए किया जाता है। उदाहरण के लिए, एक स्ट्रीम आमतौर पर फाइल स्ट्रीम को दर्शाता है, और इस क्लास का उपयोग फाइल बनाने, फाइलों में जानकारी लिखने, और फाइलों से जानकारी पढ़ने के लिए किया जा सकता है, एक स्ट्रीम एक स्ट्रिंग स्ट्रीम को दर्शाता है और आमतौर पर स्ट्रिंग्स को मैनिपुलेट करने के लिए उपयोग किया जाता है, आदि।
कंटेनर्स
यह क्लासेस का एक संग्रह है जिनका उपयोग वेक्टर्स, सेट्स, मैप्स, स्टैक्स, क्यू आदि जैसे विभिन्न डेटा टाइप्स में डेटा स्टोर करने के लिए किया जाता हैं। ये STL का एक घटक हैं।
जनरल लाइब्रेरीज
एल्गोरिदम, टाइम के लिए Chrono, इटरेटर, मेमोरी आदि जैसी लाइब्रेरीज।
न्यूमेरिक्स लाइब्रेरी
यह लाइब्रेरी उन कंपोनेंट्स का एक संग्रह है जिनका उपयोग C++ प्रोग्राम सेमी-न्यूमेरिकल ऑपरेशन करने के लिए कर सकते हैं। उदाहरण के लिए, <complex> एक क्लास टेम्पलेट और कॉम्प्लेक्स नंबर्स को दर्शाने और हेरफेर करने के लिए कई फ़ंक्शन्स को परिभाषित करता है, <random> (छद्म-) रैंडम नंबर्स उत्पन्न करने के लिए उपयोग किया जाता है, आदि।
थ्रेडिंग
यह C++11 में पेश की गई एक लाइब्रेरी है जो मूल रूप से कनकरेंसी से संबंधित है।
C स्टैंडर्ड लाइब्रेरी
C स्टैंडर्ड लाइब्रेरी के प्रत्येक हेडर को C++ स्टैंडर्ड लाइब्रेरी में एक अलग नाम से शामिल किया जाता है, जिसे .h हटाकर और शुरुआत में 'c' जोड़कर बनाया जाता है; उदाहरण के लिए, 'time.h' 'ctime' बन जाता है।