Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ STL लाइब्रेरी: कंटेनर, एल्गोरिदम और इटरेटर


C++ STL क्या है?

C++ STL (स्टैंडर्ड टेम्पलेट लाइब्रेरी) C++ टेम्पलेट क्लासेस का एक शक्तिशाली समूह है जो सामान्य-उद्देश्य वाली क्लासेस और फंक्शन्स प्रदान करता है। यह टेम्पलेट्स का उपयोग करके कई लोकप्रिय और आमतौर पर उपयोग किए जाने वाले एल्गोरिदम और डेटा संरचनाओं जैसे वेक्टर, लिस्ट, क्यू, और स्टैक को लागू करता है।

यह कंटेनर क्लासेस, एल्गोरिदम, और इटरेटर्स की एक लाइब्रेरी है। यह एक सामान्यीकृत लाइब्रेरी है, इसलिए इसके घटक पैरामीटरीकृत हैं। STL के साथ काम करने के लिए टेम्पलेट क्लासेस का कार्य ज्ञान एक पूर्वापेक्षा है।

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

C++ STL के तीन मुख्य घटक

1. कंटेनर (Containers)

कंटेनर एक निश्चित प्रकार के ऑब्जेक्ट्स के संग्रह को प्रबंधित करने के लिए उपयोग किए जाते हैं। कई अलग-अलग प्रकार के कंटेनर होते हैं जैसे डेक, लिस्ट, वेक्टर, मैप, आदि।

सीक्वेंस कंटेनर्स (Sequence Containers)

ये कंटेनर डेटा संरचनाओं को लागू करते हैं जिन्हें क्रमिक तरीके से एक्सेस किया जा सकता है।

  • vector - डायनामिक सरणी
  • list - डबल लिंक्ड लिस्ट
  • deque - डबल-एंडेड क्यू
  • array - फिक्स्ड साइज सरणी
  • forward_list - सिंगल लिंक्ड लिस्ट

कंटेनर एडाप्टर्स (Container Adaptors)

ये सीक्वेंशियल कंटेनर्स के लिए एक अलग इंटरफेस प्रदान करते हैं।

  • queue - FIFO (फर्स्ट इन फर्स्ट आउट)
  • priority_queue - प्राथमिकता आधारित क्यू
  • stack - LIFO (लास्ट इन फर्स्ट आउट)

एसोसिएटिव कंटेनर्स (Associative Containers)

ये सॉर्टेड डेटा संरचनाओं को लागू करते हैं जिन्हें जल्दी से खोजा जा सकता है (O(log n) जटिलता)।

  • set - यूनिक तत्वों का सेट
  • multiset - डुप्लिकेट तत्वों की अनुमति वाला सेट
  • map - की-वैल्यू पेयर (यूनिक की)
  • multimap - डुप्लिकेट की की अनुमति वाला मैप

अनऑर्डर्ड एसोसिएटिव कंटेनर्स (Unordered Associative Containers)

ये अनऑर्डर्ड डेटा संरचनाओं को लागू करते हैं जिन्हें जल्दी से खोजा जा सकता है (औसत O(1))।

  • unordered_set
  • unordered_multiset
  • unordered_map
  • unordered_multimap

2. एल्गोरिदम (Algorithms)

एल्गोरिदम कंटेनर्स पर कार्य करते हैं। वे उन साधनों को प्रदान करते हैं जिनके द्वारा आप कंटेनर्स की सामग्री को इनिशियलाइज़, सॉर्ट, सर्च, और ट्रांसफॉर्म करेंगे।

  • सॉर्टिंग - sort, stable_sort, partial_sort
  • सर्चिंग - binary_search, find, lower_bound, upper_bound
  • महत्वपूर्ण STL एल्गोरिदम - transform, for_each, copy, remove
  • उपयोगी सरणी एल्गोरिदम - fill, generate, iota
  • पार्टीशन ऑपरेशन्स - partition, stable_partition

3. इटरेटर्स (Iterators)

इटरेटर्स ऑब्जेक्ट्स के संग्रह के तत्वों के माध्यम से चरणबद्ध तरीके से जाने के लिए उपयोग किए जाते हैं। ये संग्रह कंटेनर या कंटेनर्स के सबसेट हो सकते हैं।

इटरेटर श्रेणियाँ

  • इनपुट इटरेटर
  • आउटपुट इटरेटर
  • फॉरवर्ड इटरेटर
  • बाइडायरेक्शनल इटरेटर
  • रैंडम एक्सेस इटरेटर

STL का उपयोग करने के लाभ

  • पुन: प्रयोज्य, परीक्षित, और कुशल कोड
  • टाइप सेफ्टी
  • सामान्य प्रोग्रामिंग सक्षम करता है
  • विकास समय कम करता है
  1. - C++ STL में set बनाम unordered_set - अंतर और उपयोग

    Set क्या है? Set एक एसोसिएटिव कंटेनर (associative container) है जिसमें Key प्रकार की अनुक्रमित (sorted) अद्वितीय (unique) वस्तुएं होती हैं। प्रत्येक तत्व केवल एक बार आ सकता है, डुप्लिकेट अनुमत नहीं हैं। उपयोगकर्ता किसी भी क्रम में तत्व डाल सकता है, लेकिन set स्वचालित रूप से क्रमबद्ध डेटा लौटाता है।

  1. C++ STL में स्टैक (3.5) C++ STL में स्टैक (3.5)

    C++ STL में, स्टैक का उपयोग एक कंटेनर के रूप में किया जाता है जिसे LIFO संरचना के रूप में कार्यान्वित किया जाता है। LIFO का अर्थ है लास्ट इन फर्स्ट आउट। स्टैक को किताबों के ढेर के रूप में देखा जा सकता है जिसमें किताबें एक के ऊपर एक व्यवस्थित होती हैं और अंत में डाली गई किताब सबसे पहले हटाई जाएगी इसल

  1. C++ STL में प्राथमिकता कतार (Priority Queue) C++ STL में प्राथमिकता कतार (Priority Queue)

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