कंटेनर (सार डेटा प्रकार): Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Software class or data structure whose instances are collections of other objects}} {{redirect|Container (computer science)|the abstract notion of containe...")
 
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{short description|Software class or data structure whose instances are collections of other objects}}
{{short description|Software class or data structure whose instances are collections of other objects}}
{{redirect|Container (computer science)|the abstract notion of containers in [[type theory]]|Container (type theory)|other uses|Container (disambiguation)}}
''कंटेनर (कंप्यूटर विज्ञान)" यहां पुनर्निर्देश करता है। प्रारूप सिद्धांत में कंटेनरों की अमूर्त धारणा के लिए, कंटेनर (प्रारूप सिद्धांत) देखें। अन्य उपयोगों के लिए, कंटेनर (बहुविकल्पी) देखें।''
{{Cleanup|reason=text is clunky|date=March 2012}}
{{Use dmy dates|date=August 2020}}
[[कंप्यूटर विज्ञान]] में, एक कंटेनर एक वर्ग (कंप्यूटर विज्ञान) या [[डेटा संरचना]] है<ref>Paul E. Black (ed.), entry for ''data structure'' in ''[[Dictionary of Algorithms and Data Structures]]. US [[National Institute of Standards and Technology]].15 December 2004. Accessed 4 Oct 2011.</ref><ref>Entry ''data structure'' in the [[Encyclopædia Britannica]] (2009) [http://www.britannica.com/EBchecked/topic/152190/data-structure Online entry] Accessed 4 Oct 2011.</ref> जिनके उदाहरण अन्य वस्तुओं का संग्रह हैं। दूसरे शब्दों में, वे वस्तुओं को एक संगठित तरीके से संग्रहीत करते हैं जो विशिष्ट पहुंच नियमों का पालन करते हैं।


कंटेनर का आकार इसमें शामिल वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (विरासत में मिले) कार्यान्वयन आकार, जटिलता और भाषा के प्रकार में भिन्न हो सकते हैं, लेकिन कई मामलों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चुनने में लचीलापन प्रदान करते हैं।
[[कंप्यूटर विज्ञान]] में, '''कंटेनर''' एक क्लास (कंप्यूटर विज्ञान) या [[डेटा संरचना]] है<ref>Paul E. Black (ed.), entry for ''data structure'' in ''[[Dictionary of Algorithms and Data Structures]]. US [[National Institute of Standards and Technology]].15 December 2004. Accessed 4 Oct 2011.''</ref><ref>Entry ''data structure'' in the [[Encyclopædia Britannica]] (2009) [http://www.britannica.com/EBchecked/topic/152190/data-structure Online entry] Accessed 4 Oct 2011.</ref> जिनके उदाहरण अन्य वस्तुओं का संग्रह हैं। दूसरे शब्दों में, वे वस्तुओं को एक संगठित तरीके से संग्रहीत करते हैं जो विशिष्ट अभिगम्य नियमों का अनुसरण करते हैं।


कंटेनर डेटा संरचनाएं आमतौर पर कई प्रकार की [[प्रोग्रामिंग भाषा]]ओं में उपयोग की जाती हैं।
कंटेनर का आकार इसमें सम्मिलित वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (इन्हेरिटेड) कार्यान्वयन आकार, जटिलता और भाषा के प्रारूपो में भिन्न हो सकते हैं, लेकिन कई स्थितियों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चयन करने में नम्यता प्रदान करते हैं।


== कार्य और गुण ==
कंटेनर डेटा संरचनाएं सामान्य रूप से कई प्रकार की [[प्रोग्रामिंग भाषा]]ओं में उपयोग की जाती हैं।
 
== फ़ंक्शन और गुण ==
कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है:
कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है:
* पहुंच, यानी कंटेनर की वस्तुओं तक पहुंचने का तरीका। सरणियों के मामले में, ऐरे इंडेक्स के साथ एक्सेस किया जाता है। ढेर के मामले में, एलआईएफओ (कंप्यूटिंग) (आखिरी में, पहले बाहर) क्रम के अनुसार पहुंच की जाती है और कतारों के मामले में यह [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] (पहले अंदर, पहले बाहर) आदेश के अनुसार किया जाता है ;
* अभिगम्य, अर्थात कंटेनर की वस्तुओं तक अभिगम्यता का तरीका है। सरणियों की स्थिति में, ऐरे इंडेक्स (अनुक्रमणिका) के साथ अभिगम्य किया जाता है। स्टैक की स्थिति में, एलआईएफओ (कंप्यूटिंग) (अंतिम अंदर प्रथम बाहर) क्रम के अनुसार अभिगम्य की जाती है और श्रेणी की स्थिति में यह [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] (पहले अंदर, पहले बाहर) क्रम के अनुसार किया जाता है ;
* भंडारण, यानी कंटेनर की वस्तुओं को संग्रहित करने का तरीका;
* भंडारण, अर्थात कंटेनर की वस्तुओं को संग्रहित करने का तरीका है;
* ट्रैवर्सल, यानी कंटेनर की वस्तुओं को पार करने का तरीका।
* ट्रैवर्सल, अर्थात कंटेनर की वस्तुओं को ट्रैवर्स करने का तरीका है।


निम्नलिखित करने के लिए कंटेनर कक्षाओं से [[CRUD]] जैसी विधियों को लागू करने की अपेक्षा की जाती है:
निम्नलिखित करने के लिए कंटेनर क्लासेस से [[CRUD|बनाएं, पढ़ें, अपडेट करें और हटाएं]] (सीआरयूडीजैसी) विधियों को प्रयुक्त करने की अपेक्षा की जाती है:
* एक खाली कंटेनर (कंस्ट्रक्टर) बनाएं;
* एक रिक्त कंटेनर (निर्माता) बनाएं;
* वस्तुओं को कंटेनर में डालें;
* वस्तुओं को कंटेनर में डालें;
* कंटेनर से वस्तुओं को हटा दें;
* कंटेनर से वस्तुओं (ऑब्जेक्ट्स) को हटा दें;
* कंटेनर में सभी वस्तुओं को हटा दें (स्पष्ट);
* कंटेनर में सभी वस्तुओं को हटा दें (स्पष्ट);
* कंटेनर में वस्तुओं तक पहुंचें;
* कंटेनर में वस्तुओं तक पहुंचें;
* कंटेनर में वस्तुओं की संख्या तक पहुँचें (गिनती)।
* कंटेनर में वस्तुओं की संख्या तक पहुँचें (गिनती)।


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


== प्रकार ==
== प्रकार ==
कंटेनरों को सिंगल-वैल्यू कंटेनर या [[सहयोगी कंटेनर]] के रूप में वर्गीकृत किया जा सकता है।
कंटेनरों को एकल-मूल्य वाले कंटेनरों या सहयोगी कंटेनरों के रूप में वर्गीकृत किया जा सकता है।


सिंगल-वैल्यू कंटेनर प्रत्येक ऑब्जेक्ट को स्वतंत्र रूप से स्टोर करते हैं। भाषा लूप निर्माण (जैसे लूप के लिए) या पुनरावर्तक के साथ वस्तुओं को सीधे एक्सेस किया जा सकता है।
एकल-मूल्य वाले कंटेनर प्रत्येक वस्तु को स्वतंत्र रूप से संग्रहीत करते हैं। ऑब्जेक्ट्स को प्रत्यक्ष रूप से एक भाषा लूप निर्माण (जैसे लूप के लिए) या एक इटरेटर (पुनरावर्तक) के साथ अभिगम्य किया जा सकता है।


एक साहचर्य कंटेनर कुंजी-मूल्य जोड़े से बना एक [[साहचर्य सरणी]], मानचित्र या शब्दकोश का उपयोग करता है, जैसे कि प्रत्येक कुंजी कंटेनर में अधिकतम एक बार दिखाई देती है। कुंजी का उपयोग मूल्य, वस्तु को खोजने के लिए किया जाता है, यदि यह कंटेनर में संग्रहीत है। साहचर्य कंटेनरों का उपयोग प्रोग्रामिंग भाषाओं में क्लास टेम्प्लेट के रूप में किया जाता है।
सहयोगी कंटेनर कुंजी-मूल्य जोड़े से बना एक साहचर्य सरणी, मानचित्र या शब्दकोश का उपयोग करता है, जैसे कि प्रत्येक कुंजी कंटेनर में अधिकतम एक बार दिखाई देती है। कुंजी का उपयोग मान, वस्तु को खोजने के लिए किया जाता है, यदि यह कंटेनर में संग्रहीत है। साहचर्य कंटेनरों का उपयोग प्रोग्रामिंग भाषाओं में क्लास टेम्प्लेट के रूप में किया जाता है।


कंटेनर सार डेटा प्रकारों में शामिल हैं:
कंटेनर अमूर्त डेटा प्रकार में सम्मिलित हैं:


* [[कतार (सार डेटा प्रकार)]]
* [[कतार (सार डेटा प्रकार)|फीफो श्रेणी]]  
* [[ढेर (सार डेटा प्रकार)]]
* [[ढेर (सार डेटा प्रकार)|लिफो स्टैक]]
* [[प्राथमिकता कतार]]ें
* [[प्राथमिकता कतार|प्राथमिकता]] श्रेणी
* [[तालिका देखो]] (LUTs)
* लुकअप तालिकाएँ (एलयूटी)
* साहचर्य सरणी | कुंजी-संबद्ध डेटा संरचनाएं
* कुंजी-संबंधित डेटा संरचनाएं
** [[सेट (सार डेटा प्रकार)]], मूल्य या विशिष्ट संपत्ति द्वारा वस्तुओं को युक्त और अनुक्रमित करना;
** मूल्य या विशिष्ट संपत्ति द्वारा वस्तुओं को निर्धारित करना, युक्त करना और अनुक्रमण करना;
** [[मानचित्र (कंप्यूटर विज्ञान)]], प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है
** [[मानचित्र (कंप्यूटर विज्ञान)]], प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है


इन सार प्रकारों को लागू करने के लिए उपयोग की जाने वाली सामान्य डेटा संरचनाओं में शामिल हैं:
इन अमूर्त प्रारूप को प्रयुक्त करने के लिए उपयोग की जाने वाली सामान्य डेटा संरचनाओं में सम्मिलित हैं:
* [[सरणी डेटा संरचना]] और उनके डेरिवेटिव
* [[सरणी डेटा संरचना]] और उनके डेरिवेटिव ( व्युत्पन्न शब्द)
* लिंक्ड सूचियाँ
* लिंक की गई सूचियां
* [[बाइनरी सर्च ट्री]] (BSTs), विशेष रूप से [[सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री]] | सेल्फ-बैलेंसिंग BSTs
* बाइनरी सर्च ट्री (बीएसटी), विशेष रूप से स्व-संतुलन वाले बीएसटी
* [[हैश तालिका]]
* [[हैश तालिका|हैश सारणी]]


== ग्राफिक कंटेनर ==
== ग्राफिक कंटेनर ==
[[विजेट टूलकिट]] कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे [[विंडो (कंप्यूटिंग)]], [[पैनल (कंप्यूटर सॉफ्टवेयर)]] को समूहित करने के लिए विशेष [[विजेट (कंप्यूटिंग)]] हैं। उनके ग्राफिकल गुणों के अलावा, उनके पास कंटेनर कक्षाओं के समान व्यवहार है, क्योंकि वे अपने बच्चों के विजेट (कंप्यूटिंग) की एक सूची रखते हैं, और अपने बच्चों के बीच विजेट (कंप्यूटिंग) को जोड़ने, हटाने या पुनर्प्राप्त करने की अनुमति देते हैं।
[[विजेट टूलकिट]] कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे [[विंडो (कंप्यूटिंग)]], [[पैनल (कंप्यूटर सॉफ्टवेयर)]] को समूहित करने के लिए विशेष [[विजेट (कंप्यूटिंग)]] हैं। उनके ग्राफिकल गुणों के अतिरिक्त, उनके पास कंटेनर क्लासेस के समान गतिविधि है, क्योंकि वे अपने बच्चों के विजेट (कंप्यूटिंग) की एक सूची रखते हैं, और अपने बच्चों के बीच विजेट (कंप्यूटिंग) को जोड़ने, हटाने या पुनर्प्राप्त करने की स्वीकृति देते हैं।


== वैधानिक रूप से टाइप की गई भाषाओं में ==
== वैधानिक रूप से टाइप की गई भाषाओं में ==
{{See also|Statically-typed programming language|Strong and weak typing}}
{{See also|वैधानिक रूप से टाइप की गई प्रोग्रामिंग भाषा और प्रबल और दुर्बल टाइपिंग}}
कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग लैंग्वेज में लिखा जा सकता है, चाहे उसका टाइप सिस्टम कुछ भी हो।<ref name="Budd1997" >{{Cite book|last=Budd|first=Timothy|url=https://www.worldcat.org/oclc/34788238|title=An introduction to object-oriented programming|date=1997|publisher=Addison-Wesley|isbn=0-201-82419-1|edition=2nd|location=Reading, Mass.|oclc=34788238}}</ref>{{Rp|page=273}} हालांकि, [[मजबूत और कमजोर टाइपिंग]]|दृढ़ता से टाइप की गई वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में एक डेवलपर के लिए पुन: प्रयोज्य सजातीय कंटेनर लिखना कुछ जटिल हो सकता है।


तत्व प्रकारों में अंतर के कारण यह प्रत्येक मौलिक प्रकार के लिए लिखने और कंटेनरों का संग्रह रखने की एक कठिन प्रक्रिया में परिणत होता है।{{r|Budd1997|pages=274-276}}
कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है, तथापि उसका टाइप सिस्टम कुछ भी हो।<ref name="Budd1997" >{{Cite book|last=Budd|first=Timothy|url=https://www.worldcat.org/oclc/34788238|title=An introduction to object-oriented programming|date=1997|publisher=Addison-Wesley|isbn=0-201-82419-1|edition=2nd|location=Reading, Mass.|oclc=34788238}}</ref>{{Rp|page=273}} हालांकि, |दृढ़ता से टाइप की गई वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में एक विकासक के लिए पुन: प्रयोज्य सजातीय कंटेनर लिखना कुछ जटिल हो सकता है।
कई तात्विक प्रकार (जैसे पूर्णांक या फ्लोटिंग नंबर) एक दूसरे के साथ स्वाभाविक रूप से असंगत होते हैं क्योंकि वे स्मृति आकार और उनके अर्थपूर्ण अर्थ के कारण होते हैं और इसलिए विभिन्न कंटेनरों की आवश्यकता होती है (बेशक, वे पारस्परिक रूप से संगत या परिवर्तनीय हैं)।{{r|Budd1997|pages=274-276}} आधुनिक प्रोग्रामिंग भाषाएँ समस्या को हल करने में मदद करने के लिए विभिन्न दृष्टिकोण प्रदान करती हैं:{{r|Budd1997|pages=274-281}}
 
:; यूनिवर्सल बुनियादी प्रकार
तत्व प्रारूप में अंतर के कारण यह प्रत्येक मौलिक प्रकार के लिए लिखने और कंटेनरों का संग्रह रखने की एक कठिन प्रक्रिया में परिणत होता है।{{r|Budd1997|pages=274-276}}
:: एक प्रकार जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा असाइन किया जा सकता है।
 
कई तात्विक प्रारूप (जैसे पूर्णांक या फ्लोटिंग (चल) संख्या) एक दूसरे के साथ स्वाभाविक रूप से असंगत होते हैं क्योंकि वे मेमोरी आकार और उनके अर्थपूर्ण अर्थ के कारण होते हैं और इसलिए विभिन्न कंटेनरों की आवश्यकता होती है (विशेष रूप से, वे पारस्परिक रूप से संगत या परिवर्तनीय हैं)।{{r|Budd1997|pages=274-276}} आधुनिक प्रोग्रामिंग भाषाएँ समस्या को संशोधित करने में सहायता करने के लिए विभिन्न दृष्टिकोण प्रदान करती हैं:{{r|Budd1997|pages=274-281}}
:; सार्वभौमिक मूल प्रारूप
:: प्रारूप जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा निर्देश्य किया जा सकता है।
:; [[डाउनकास्टिंग]];
:; [[डाउनकास्टिंग]];
:; कक्षा प्रतिस्थापन
:; क्लास प्रतिस्थापन
:: कमजोर टाइप की गई भाषाओं के लिए उपरोक्त पिछले तीन दृष्टिकोणों का उपयोग किया जाता है; ये आमतौर पर वंशानुक्रम और बहुरूपता को प्रकारों द्वारा साझा करते हैं।
:: दुर्बल टाइप की गई भाषाओं के लिए उपरोक्त पूर्व तीन दृष्टिकोणों का उपयोग किया जाता है; ये सामान्य रूप से इन्हेरिटेड और बहुरूपता को प्रारूपों द्वारा साझा करते हैं।
:; [[संघ प्रकार]] (C/C++ भाषा)
:; [[संघ प्रकार|संघ]] प्रारूप (C/C++ भाषा)
:: विभिन्न प्रकार के डेटा आकारों के भंडारण की अनुमति देता है; हालांकि, यह सुनिश्चित करना कठिन है कि पुनर्प्राप्ति पर संघ में किस प्रकार का संग्रह किया जाता है और इसका सावधानीपूर्वक पालन किया जाना चाहिए।
:: विभिन्न प्रकार के डेटा आकारों के भंडारण की स्वीकृति देता है; हालांकि, यह सुनिश्चित करना कठिन है कि पुनर्प्राप्ति पर संघ में किस प्रारूप का संग्रह किया जाता है और इसका सावधानीपूर्वक अनुसरण किया जाना चाहिए।
:; प्रकार रूपांतरण
:; प्रारूप रूपांतरण
:; [[टेम्पलेट (सी ++)]]C++)s या [[सामान्य प्रोग्रामिंग]]
:; [[टेम्पलेट (सी ++)|टेम्पलेट (C ++)]]C++)s या [[सामान्य प्रोग्रामिंग]]
:: पुन: प्रयोज्यता और प्रकार की सुरक्षा सुनिश्चित करता है; रिवर्स विरासत के रूप में सोचा जा सकता है। हालांकि, इस दृष्टिकोण को एक [[टेम्पलेट विशेषज्ञता]] को लागू करने की आवश्यकता हो सकती है जो प्रतिष्ठित रूप से एक समय लेने वाली प्रक्रिया है जो उनके तरीकों में भिन्न होती है।{{r|Budd1997|pages=281}}
:: पुन: प्रयोज्यता और प्रारूप की सुरक्षा सुनिश्चित करता है; प्रतिकृति इन्हेरिटेड के रूप में विचार किया जा सकता है। हालांकि, इस दृष्टिकोण को [[टेम्पलेट विशेषज्ञता]] को प्रयुक्त करने की आवश्यकता हो सकती है जो विशेष रूप से एक समय लेने वाली प्रक्रिया है जो उनके तरीकों में भिन्न होती है।{{r|Budd1997|pages=281}}




Line 72: Line 73:
* [[डेटा संरचनाओं की सूची]]
* [[डेटा संरचनाओं की सूची]]
*मानक टेम्प्लेट लाइब्रेरी#कंटेनर
*मानक टेम्प्लेट लाइब्रेरी#कंटेनर
* [[संग्रह (सार डेटा प्रकार)]]
* [[संग्रह (सार डेटा प्रकार)|संग्रह (अमूर्त डेटा प्रारूप)]]
* [[ढेर (डेटा संरचना)]]
* [[ढेर (डेटा संरचना)|स्टैक (डेटा संरचना)]]
* [[जावा समवर्ती मानचित्र]]
* [[जावा समवर्ती मानचित्र]]


Line 86: Line 87:
{{Data types}}
{{Data types}}


{{DEFAULTSORT:Container (Data Structure)}}[[Category: सार डेटा प्रकार]] [[Category: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]]
{{DEFAULTSORT:Container (Data Structure)}}


[[eo:Ujo]]
[[eo:Ujo]]
Line 92: Line 93:
[[qu:Wisina]]
[[qu:Wisina]]


 
[[Category:Articles with hatnote templates targeting a nonexistent page|Container (Data Structure)]]
 
[[Category:Collapse templates|Container (Data Structure)]]
[[Category: Machine Translated Page]]
[[Category:Created On 17/02/2023|Container (Data Structure)]]
[[Category:Created On 17/02/2023]]
[[Category:Lua-based templates|Container (Data Structure)]]
[[Category:Machine Translated Page|Container (Data Structure)]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Container (Data Structure)]]
[[Category:Pages with script errors|Container (Data Structure)]]
[[Category:Short description with empty Wikidata description|Container (Data Structure)]]
[[Category:Sidebars with styles needing conversion|Container (Data Structure)]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Container (Data Structure)]]
[[Category:Templates generating microformats|Container (Data Structure)]]
[[Category:Templates that add a tracking category|Container (Data Structure)]]
[[Category:Templates that are not mobile friendly|Container (Data Structure)]]
[[Category:Templates that generate short descriptions|Container (Data Structure)]]
[[Category:Templates using TemplateData|Container (Data Structure)]]
[[Category:Wikipedia metatemplates|Container (Data Structure)]]
[[Category:ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग|Container (Data Structure)]]
[[Category:सार डेटा प्रकार|Container (Data Structure)]]

Latest revision as of 17:26, 3 March 2023

कंटेनर (कंप्यूटर विज्ञान)" यहां पुनर्निर्देश करता है। प्रारूप सिद्धांत में कंटेनरों की अमूर्त धारणा के लिए, कंटेनर (प्रारूप सिद्धांत) देखें। अन्य उपयोगों के लिए, कंटेनर (बहुविकल्पी) देखें।

कंप्यूटर विज्ञान में, कंटेनर एक क्लास (कंप्यूटर विज्ञान) या डेटा संरचना है[1][2] जिनके उदाहरण अन्य वस्तुओं का संग्रह हैं। दूसरे शब्दों में, वे वस्तुओं को एक संगठित तरीके से संग्रहीत करते हैं जो विशिष्ट अभिगम्य नियमों का अनुसरण करते हैं।

कंटेनर का आकार इसमें सम्मिलित वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (इन्हेरिटेड) कार्यान्वयन आकार, जटिलता और भाषा के प्रारूपो में भिन्न हो सकते हैं, लेकिन कई स्थितियों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चयन करने में नम्यता प्रदान करते हैं।

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

फ़ंक्शन और गुण

कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है:

  • अभिगम्य, अर्थात कंटेनर की वस्तुओं तक अभिगम्यता का तरीका है। सरणियों की स्थिति में, ऐरे इंडेक्स (अनुक्रमणिका) के साथ अभिगम्य किया जाता है। स्टैक की स्थिति में, एलआईएफओ (कंप्यूटिंग) (अंतिम अंदर प्रथम बाहर) क्रम के अनुसार अभिगम्य की जाती है और श्रेणी की स्थिति में यह फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स) (पहले अंदर, पहले बाहर) क्रम के अनुसार किया जाता है ;
  • भंडारण, अर्थात कंटेनर की वस्तुओं को संग्रहित करने का तरीका है;
  • ट्रैवर्सल, अर्थात कंटेनर की वस्तुओं को ट्रैवर्स करने का तरीका है।

निम्नलिखित करने के लिए कंटेनर क्लासेस से बनाएं, पढ़ें, अपडेट करें और हटाएं (सीआरयूडीजैसी) विधियों को प्रयुक्त करने की अपेक्षा की जाती है:

  • एक रिक्त कंटेनर (निर्माता) बनाएं;
  • वस्तुओं को कंटेनर में डालें;
  • कंटेनर से वस्तुओं (ऑब्जेक्ट्स) को हटा दें;
  • कंटेनर में सभी वस्तुओं को हटा दें (स्पष्ट);
  • कंटेनर में वस्तुओं तक पहुंचें;
  • कंटेनर में वस्तुओं की संख्या तक पहुँचें (गिनती)।

कंटेनरों को कभी-कभी पुनरावृत्तियों के साथ संयोजन में कार्यान्वित किया जाता है।

प्रकार

कंटेनरों को एकल-मूल्य वाले कंटेनरों या सहयोगी कंटेनरों के रूप में वर्गीकृत किया जा सकता है।

एकल-मूल्य वाले कंटेनर प्रत्येक वस्तु को स्वतंत्र रूप से संग्रहीत करते हैं। ऑब्जेक्ट्स को प्रत्यक्ष रूप से एक भाषा लूप निर्माण (जैसे लूप के लिए) या एक इटरेटर (पुनरावर्तक) के साथ अभिगम्य किया जा सकता है।

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

कंटेनर अमूर्त डेटा प्रकार में सम्मिलित हैं:

इन अमूर्त प्रारूप को प्रयुक्त करने के लिए उपयोग की जाने वाली सामान्य डेटा संरचनाओं में सम्मिलित हैं:

  • सरणी डेटा संरचना और उनके डेरिवेटिव ( व्युत्पन्न शब्द)
  • लिंक की गई सूचियां
  • बाइनरी सर्च ट्री (बीएसटी), विशेष रूप से स्व-संतुलन वाले बीएसटी
  • हैश सारणी

ग्राफिक कंटेनर

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

वैधानिक रूप से टाइप की गई भाषाओं में

कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है, तथापि उसका टाइप सिस्टम कुछ भी हो।[3]: 273  हालांकि, |दृढ़ता से टाइप की गई वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में एक विकासक के लिए पुन: प्रयोज्य सजातीय कंटेनर लिखना कुछ जटिल हो सकता है।

तत्व प्रारूप में अंतर के कारण यह प्रत्येक मौलिक प्रकार के लिए लिखने और कंटेनरों का संग्रह रखने की एक कठिन प्रक्रिया में परिणत होता है।[3]: 274–276 

कई तात्विक प्रारूप (जैसे पूर्णांक या फ्लोटिंग (चल) संख्या) एक दूसरे के साथ स्वाभाविक रूप से असंगत होते हैं क्योंकि वे मेमोरी आकार और उनके अर्थपूर्ण अर्थ के कारण होते हैं और इसलिए विभिन्न कंटेनरों की आवश्यकता होती है (विशेष रूप से, वे पारस्परिक रूप से संगत या परिवर्तनीय हैं)।[3]: 274–276  आधुनिक प्रोग्रामिंग भाषाएँ समस्या को संशोधित करने में सहायता करने के लिए विभिन्न दृष्टिकोण प्रदान करती हैं:[3]: 274–281 

सार्वभौमिक मूल प्रारूप
प्रारूप जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा निर्देश्य किया जा सकता है।
डाउनकास्टिंग;
क्लास प्रतिस्थापन
दुर्बल टाइप की गई भाषाओं के लिए उपरोक्त पूर्व तीन दृष्टिकोणों का उपयोग किया जाता है; ये सामान्य रूप से इन्हेरिटेड और बहुरूपता को प्रारूपों द्वारा साझा करते हैं।
संघ प्रारूप (C/C++ भाषा)
विभिन्न प्रकार के डेटा आकारों के भंडारण की स्वीकृति देता है; हालांकि, यह सुनिश्चित करना कठिन है कि पुनर्प्राप्ति पर संघ में किस प्रारूप का संग्रह किया जाता है और इसका सावधानीपूर्वक अनुसरण किया जाना चाहिए।
प्रारूप रूपांतरण
टेम्पलेट (C ++)C++)s या सामान्य प्रोग्रामिंग
पुन: प्रयोज्यता और प्रारूप की सुरक्षा सुनिश्चित करता है; प्रतिकृति इन्हेरिटेड के रूप में विचार किया जा सकता है। हालांकि, इस दृष्टिकोण को टेम्पलेट विशेषज्ञता को प्रयुक्त करने की आवश्यकता हो सकती है जो विशेष रूप से एक समय लेने वाली प्रक्रिया है जो उनके तरीकों में भिन्न होती है।[3]: 281 


यह भी देखें

संदर्भ

  1. Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures. US National Institute of Standards and Technology.15 December 2004. Accessed 4 Oct 2011.
  2. Entry data structure in the Encyclopædia Britannica (2009) Online entry Accessed 4 Oct 2011.
  3. 3.0 3.1 3.2 3.3 3.4 Budd, Timothy (1997). An introduction to object-oriented programming (2nd ed.). Reading, Mass.: Addison-Wesley. ISBN 0-201-82419-1. OCLC 34788238.


बाहरी संबंध