मैंने कई लोगों को यह कहते हुए सुना है कि अगर कंटेनर में अपेक्षित तत्वों की संख्या अपेक्षाकृत छोटी है तो के बजाय std::vector
का उपयोग करना बेहतर है, हालांकि मैं केवल लुकअप के लिए कंटेनर का उपयोग करता हूं और पुनरावृत्ति के लिए नहीं।वेक्टर या मानचित्र, जिसका उपयोग करने के लिए?
इसके पीछे असली कारण क्या है?
स्पष्ट रूप से मानचित्र का लुकअप प्रदर्शन वेक्टर की तुलना में भी बुरा नहीं हो सकता है (हालांकि यह नैनोसेकंड/माइक्रोसॉन्ड में हो सकता है) तो क्या इसका उपयोग स्मृति उपयोग के साथ कुछ करना है?
क्या वेक्टर वर्चुअल एड्रेस स्पेस के खंडन में मानचित्र से बेहतर/खराब है?
मैं एसटीएल लाइब्रेरी का उपयोग कर रहा हूं जो विजुअल स्टूडियो (यानी माइक्रोसॉफ्ट कार्यान्वयन) के साथ आता है जो अन्य कार्यान्वयन से कोई फर्क पड़ता है?
आश्चर्यजनक रूप से मैंने पाया कि जावा का हैश मैप सी ++ मानचित्र से बहुत तेज है। आपकी पोस्ट का अंतिम अनुच्छेद संभवतः क्यों बताता है। – wmac
@wmac: दाएं: जावा के 'हैश मैप' से सी ++ 'हैश_मैप' या 'unordered_map', और जावा के' सॉर्टेड मैप 'को C++ 'map' से तुलना करना अधिक सटीक है। –
जब मैंने बेंचमार्क किया तो मुझे वह बिंदु मिला जहां एक std :: मानचित्र बाहर std :: vector लगभग 8000 होने के लिए, लेकिन कुछ हार्डवेयर पर 1000 के रूप में कम है, मैं जिस कोड का उपयोग करता हूं वह यहां उपलब्ध है: https: // github। com/BlackToppStudios/DAGFrameScheduler/blob/8bfaa295b76f8e58dd4fc21186e1c7f3dd3e323a/test/dagsizestests.h – Sqeaky