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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

यह भी देखें

 * डेटा संरचनाओं की सूची
 * मानक टेम्प्लेट लाइब्रेरी#कंटेनर
 * संग्रह (अमूर्त डेटा प्रारूप)
 * स्टैक (डेटा संरचना)
 * जावा समवर्ती मानचित्र

बाहरी संबंध

 * Container Data Structure Declaration and Initialization

Ujo Container (programação) Wisina