जवाबों:
Hash
एक बेहद खराब नाम वाली डेटा संरचना है जहां प्रोग्रामर ने कार्यान्वयन के साथ इंटरफ़ेस को भ्रमित किया है ( और पूर्ण नाम लिखने के लिए बहुत आलसी था, यानी HashTable
एक संक्षिप्त नाम का सहारा लेते हुए Hash
)।
Dictionary
इंटरफ़ेस (= ADT ) का "सही" नाम है , यानी एक साहचर्य कंटेनर जो (आमतौर पर विशिष्ट) कुंजी को मैप करता है (जरूरी नहीं कि अद्वितीय) मान।
एक हैश तालिका ऐसे शब्दकोश का एक संभावित कार्यान्वयन है जो काफी अच्छी पहुंच विशेषताओं (रनटाइम के संदर्भ में) प्रदान करता है और इसलिए अक्सर डिफ़ॉल्ट कार्यान्वयन होता है।
इस तरह के कार्यान्वयन के दो महत्वपूर्ण गुण हैं:
(कुंजी के लिए हैशबल होने का मतलब है कि हम एक कुंजी से एक संख्यात्मक मान की गणना कर सकते हैं जो बाद में एक सरणी में एक सूचकांक के रूप में उपयोग किया जाता है।)
शब्दकोश डेटा संरचना के वैकल्पिक कार्यान्वयन मौजूद हैं जो कुंजियों पर एक आदेश देते हैं - इसे अक्सर एक सॉर्ट किया गया शब्दकोश कहा जाता है (और आमतौर पर एक खोज ट्री के संदर्भ में लागू किया जाता है, हालांकि अन्य कुशल कार्यान्वयन मौजूद हैं)।
संक्षेप में: एक शब्दकोश एक ADT है जो मूल्यों की कुंजी को मैप करता है। इस एडीटी के कई संभावित कार्यान्वयन हैं, जिनमें से हैश तालिका एक है। Hash
एक मिथ्या नाम है, लेकिन संदर्भ में यह एक शब्दकोश के बराबर है जो हैश टेबल के संदर्भ में लागू किया गया है।
Hash
हैश टेबल के साथ क्लास को लागू करना वास्तव में असंभव है , क्योंकि रूबी 1.9 Hash
एस इनसर्शन ऑर्डर को संरक्षित करता है जबकि हैश टेबल नहीं करता है। इसलिए, रूबी 1.9 में, नाम Hash
किसी भी अधिक कार्यान्वयन को प्रतिबिंबित नहीं करता है।
"शब्दकोश" अवधारणा का नाम है। एक हैशटेबल एक संभावित कार्यान्वयन है।
एक शब्दकोश सामूहिक शब्द है जो किसी भी डेटा संरचना कार्यान्वयन के लिए दिया जाता है जिसका उपयोग तेजी से देखने / सम्मिलन के लिए किया जाता है। यह विभिन्न डेटा संरचनाओं जैसे हैश टेबल, स्किप लिस्ट, आरबी ट्री इत्यादि का उपयोग करके प्राप्त / कार्यान्वित किया जा सकता है। एक हैश टेबल एक विशिष्ट डेटा संरचना है जो शब्दकोश को लागू करने सहित कई उद्देश्यों के लिए उपयोगी है।
एक शब्दकोश एक साहचर्य सरणी के अंदर सीधे मूल्य को संदर्भित करने के लिए एक कुंजी का उपयोग करता है ।
अर्थात (KEY => VALUE)
एक हैश को अक्सर हैश तालिका के रूप में वर्णित किया जाता है जो मेमोरी में स्थिति की गणना करने के लिए एक हैश फ़ंक्शन का उपयोग करता है (या अधिक आसानी से एक सरणी) जहां मूल्य होगा। हैश कुंजी को इनपुट के रूप में लेगा और आउटपुट के रूप में एक मूल्य देगा। फिर उस मान को मेमोरी या एरे इंडेक्स में प्लग करें।
अर्थात KEY => HASH FUNCTION => VALUE
मुझे लगता है कि एक प्रत्यक्ष है जबकि दूसरा नहीं है। हैश फ़ंक्शंस या तो सही नहीं हो सकते हैं और कभी-कभी गलत मान संदर्भित करने वाला एक सूचकांक प्रदान कर सकते हैं। लेकिन इसे सुधारा जा सकता है।
देखने के लिए सबसे अच्छी जगह: विकिपीडिया ( साहचर्य सरणी और हैश तालिका )
unordered_map
यह दिखाने के लिए बुलाया जाता है कि वे जो करते हैं, उसके बजाय वे क्या करते हैं।