इस प्रश्न का उत्तर देना प्रोग्रामर द्वारा जटिल है, विशेष रूप से इस्तेमाल की जाने वाली भाषाओं या प्रणालियों में अधिक विशिष्ट अर्थ दिए गए शब्दों को देखने के बाद, लेकिन यह सवाल एक भाषा अज्ञेय तुलना "सिद्धांत रूप में" के लिए पूछता है, जिसे मैं कम्प्यूटिंग विज्ञान के संदर्भ में बताने जा रहा हूं। ।
शब्दावली समझाया
ऑक्सफोर्ड यूनिवर्सिटी डिक्शनरी ऑफ़ कंप्यूटर साइंस लिस्ट:
किसी भी डेटा संरचना को तत्वों के एक सेट का प्रतिनिधित्व करने वाले शब्दकोश में शामिल करें जो तत्वों के सम्मिलन और विलोपन के साथ-साथ सदस्यता के लिए परीक्षण कर सकता है
- उदाहरण के लिए, हमारे पास {A, B, C, D ...} तत्वों का एक सेट है जिसे हम सम्मिलित कर सकते हैं और हटाना शुरू कर सकते हैं, और हम "C मौजूद है?" ।
मानचित्र की कम्प्यूटिंग विज्ञान धारणा हालांकि गणितीय भाषाई शब्द मानचित्रण पर आधारित है , जिसे ऑक्सफोर्ड डिक्शनरी इस प्रकार परिभाषित करती है:
मैपिंग एक ऑपरेशन जो किसी दिए गए सेट (डोमेन) के प्रत्येक तत्व को दूसरे सेट (रेंज) के एक या अधिक तत्वों से जोड़ता है।
- जैसे, एक मानचित्र डेटा संरचना किसी दिए गए सेट के तत्वों से जाने का एक तरीका प्रदान करती है - ज्ञात हैं कि नक्शे में " कुंजियाँ " हैं, दूसरे सेट में एक या अधिक तत्वों के लिए - जिसे संबंधित " मूल्य (ओं) " के रूप में जाना जाता है ।
- "दूसरे सेट में ... या अधिक तत्वों" पहलू एक कार्यान्वयन के द्वारा समर्थित किया जा सकता है दो अलग-अलग तरीका है:
- कई मानचित्र कार्यान्वयन कुंजियों की विशिष्टता को लागू करते हैं और केवल प्रत्येक कुंजी को एक मान के साथ जुड़े रहने की अनुमति देते हैं, लेकिन यह मान एक डेटा संरचना में सक्षम हो सकता है जिसमें एक सरल डेटा प्रकार के कई मान होते हैं, जैसे {{1, {"एक" , "ichi"}, {2, {"दो", "नी"}}} तार के जोड़े से मिलकर मूल्यों को दर्शाता है।
- अन्य मानचित्र कार्यान्वयन डुप्लिकेट कुंजियों को प्रत्येक मैपिंग को समान या अलग-अलग मानों की अनुमति देते हैं - जो कार्यात्मक रूप से "सहयोगियों ... प्रत्येक [कुंजी] तत्व ... के साथ ... अधिक [एक] [मूल्य] तत्वों" मामले को संतुष्ट करता है। उदाहरण के लिए, {{1, "एक"}, {1, "इचि"}, {2, "दो"}, {2, "नी"}}।
शब्दकोश और मानचित्र विपरीत
इसलिए, ऊपर दिए गए Comp Comp Sciology शब्द का उपयोग करते हुए, एक शब्दकोश केवल एक नक्शा है यदि इंटरफ़ेस हर ऑपरेशन के लिए आवश्यक अतिरिक्त संचालन का समर्थन करने के लिए होता है:
एक तुच्छ मोड़:
- एक नक्शा इंटरफ़ेस सीधे एक परीक्षण का समर्थन नहीं कर सकता है कि क्या एक {कुंजी, मान} जोड़ी कंटेनर में है, जो कि एक शब्दकोश की आवश्यकता है जहां तत्वों की आवश्यकता होती है {कुंजी, मूल्य} जोड़े; मानचित्र में कुंजी के परीक्षण के लिए फ़ंक्शन भी नहीं हो सकता है, लेकिन सबसे खराब रूप से आप यह देख सकते हैं कि यदि कोई प्रयास किया गया मूल्य-पुनर्प्राप्ति-बाय-कुंजी सफल होता है या विफल रहता है, तो यदि आप परवाह करते हैं कि कुंजी एक अपेक्षित मान प्राप्त कर सकती है या नहीं।
अपने दर्शकों के लिए स्पष्ट रूप से संवाद करें
The उपरोक्त सभी के बावजूद, यदि आप ऊपर बताए गए सख्त कम्प्यूटिंग विज्ञान के शब्दकोष का उपयोग करते हैं, तो अपने दर्शकों से अपेक्षा न करें कि वे शुरू में आपका अनुसरण करेंगे, या जब आप साझा करते हैं और शब्दावली का बचाव करते हैं तो प्रभावित होंगे। इस सवाल के अन्य उत्तर (और उनके उत्थान) बताते हैं कि यह कितनी संभावना है कि "शब्दकोश" अधिकांश प्रोग्रामर के अनुभव में "मानचित्र" का पर्याय बन जाएगा । ऐसी शब्दावली चुनने की कोशिश करें जो अधिक व्यापक और स्पष्ट रूप से समझ में आए: उदाहरण के लिए
- साहचर्य कंटेनर : कोई भी कंटेनर कुंजी / मान जोड़े को कुंजी द्वारा मूल्य-पुनः प्राप्ति और मिटाने के साथ संग्रहीत करता है
- हैश मैप : एक सहयोगी कंटेनर का हैश टेबल कार्यान्वयन
- हैश सेट अद्वितीय कुंजी लागू करता है : एक शब्दकोश भंडारण तत्वों / मूल्यों का हैश तालिका कार्यान्वयन उन्हें अलग-अलग कुंजी / मूल्य घटकों के रूप में व्यवहार किए बिना, जिसमें तत्वों के डुप्लिकेट सम्मिलित नहीं किए जा सकते हैं।
- डुप्लिकेट कुंजी का समर्थन करने वाला बाइनरी ट्री मैप : ...
विशिष्ट कार्यान्वयन के साथ क्रॉस साइंस शब्दावली
सी ++ मानक पुस्तकालय
- नक्शे:
map
, multimap
, unordered_map
,unordered_multimap
- अन्य शब्दकोशों:
set
, multiset
, unordered_set
,unordered_multiset
- ध्यान दें: iterators के साथ या
std::find
आप में सदस्यता के लिए एक तत्व और परीक्षण को मिटा सकते हैं array
, vector
, list
, deque
आदि, लेकिन कंटेनर इंटरफेस सीधे उस का समर्थन नहीं करते क्योंकि एक तत्व खोजने हे (एन) में शानदार अक्षम है, कुछ मामलों सम्मिलित / मिटा है में अक्षम है, और उन ऑपरेशनों का समर्थन जानबूझकर सीमित एपीआई कंटेनर से करता है - उदाहरण के deque
लिए, आगे और पीछे केवल मिटा / पॉप का समर्थन करना चाहिए और कुछ कुंजी के संदर्भ में नहीं। खोज को ऑर्केस्ट्रेट करने के लिए कोड में अधिक काम करने से प्रोग्रामर को अधिक कुशल खोज के साथ कंटेनर डेटा संरचना पर स्विच करने के लिए धीरे से प्रोत्साहित किया जाता है।
... अन्य भाषाओं को बाद में जोड़ सकते हैं / बेझिझक संपादित कर सकते हैं ...