unordered_map
C ++ के बारे में हाल ही में एक बात ने मुझे एहसास दिलाया कि मुझे unordered_map
ज्यादातर मामलों में उपयोग करना चाहिए जहां मैंने map
पहले इस्तेमाल किया था, क्योंकि लुकअप की दक्षता ( amortized O (1) बनाम O (लॉग एन) )। ज्यादातर बार मैं एक मानचित्र का उपयोग करता हूं, मैं int
या तो std::string
मुख्य प्रकार का उपयोग करता हूं ; इसलिए, मुझे हैश फ़ंक्शन की परिभाषा से कोई समस्या नहीं है। जितना मैंने इसके बारे में सोचा था, उतना ही मुझे एहसास हुआ कि मैं साधारण प्रकार के साथ चाबियाँ के मामले में एक std::map
से अधिक उपयोग करने का कोई कारण नहीं पा सकता std::unordered_map
हूं - मैंने इंटरफेस पर एक नज़र डाली, और कोई भी नहीं पाया महत्वपूर्ण अंतर जो मेरे कोड को प्रभावित करेगा।
इसलिए सवाल: क्या उपयोग करने के लिए किसी भी असली कारण है std::map
से अधिक std::unordered_map
की तरह साधारण प्रकार के मामले में int
और std::string
?
मैं कड़ाई से प्रोग्रामिंग के दृष्टिकोण से पूछ रहा हूं - मुझे पता है कि यह पूरी तरह से मानक नहीं माना जाता है, और यह पोर्टिंग के साथ समस्याओं का सामना कर सकता है।
इसके अलावा, मुझे उम्मीद है कि एक सही जवाब "डेटा के छोटे सेट के लिए अधिक कुशल हो सकता है " क्योंकि एक छोटे से ओवरहेड (क्या यह सच है?) - इसलिए मैं उन मामलों पर सवाल सीमित करना चाहूंगा जहां राशि है? चाबियाँ गैर-तुच्छ हैं (> 1 024)।
संपादित करें: duh, मैं स्पष्ट (धन्यवाद GMan!) भूल गया - हाँ, नक्शे निश्चित रूप से ऑर्डर किए गए हैं - मुझे पता है कि, और अन्य कारणों की तलाश कर रहा हूं।