[c++] क्या पहले से ही कुछ स्टडी :: वेक्टर आधारित सेट / मैप कार्यान्वयन है?


2 Answers

अगर आप कुछ भी उपयुक्त नहीं ढूँढ सकते हैं, तो मैं सिर्फ एक स्टाउड :: वेक्टर को सम्मिलित करने के लिए सॉर्ट करने के लिए लपेटूंगा, और कम से कम () का उपयोग करके find () को कार्यान्वित करें यह सीधे आगे होना चाहिए, और कस्टम समाधान के रूप में उतना कुशल होना चाहिए।

Question

छोटे सेट या नक्शे के लिए, आमतौर पर पेड़-आधारित set / map बजाय सॉर्ट किया गया वेक्टर का उपयोग करने के लिए यह बहुत तेजी से होता है - विशेषकर 5-10 तत्वों की तरह कुछ के लिए एलएलवीएम के पास उस भावना में कुछ कक्षाएं हैं, लेकिन कोई वास्तविक एडाप्टर नहीं है जो एक std::map जैसे एक std::vector साथ बैक अप इंटरफ़ेस प्रदान करेगा।

इस के बाहर कोई भी (नि: शुल्क) कार्यान्वयन?

संपादित करें : सभी वैकल्पिक विचारों के लिए धन्यवाद, लेकिन मुझे सदिश आधारित सेट / मानचित्र में वास्तव में दिलचस्पी है I मेरे पास ऐसे विशिष्ट मामले हैं, जहां मैं बड़ी संख्या में सेट / मैप बनाते हैं जो आमतौर पर 10 से कम तत्वों में होते हैं और मुझे वास्तव में कम स्मृति दबाव होना चाहिए। एक त्रिकोण मेष में शीर्ष के लिए उदाहरण के लिए पड़ोसी किनारों के बारे में सोचो, आप आसानी से प्रत्येक 3-4 तत्वों के 100k सेट के साथ हवा निकाल सकते हैं




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

कहा है कि, आप हैश_मैप एक कोशिश दे सकते हैं कुंजी द्वारा लुकअप को निरंतर समय में चलाने की गारंटी है।




हो सकता है कि आप अनोर्ड नक्शा और अनारडेड सेट की तलाश करें। TR1 अनारडेड कंटेनर पर एक नज़र डालने की कोशिश करें जो हैशिंग पर निर्भर हैं, या बूस्टअनारोर्ड कंटेनर लाइब्रेरी इंटरफ़ेस के नीचे, मुझे यकीन नहीं है कि क्या वे वास्तव में std :: vector का उपयोग करते हैं, लेकिन मैं दांव लगाना चाहता हूँ कि यह देखने के लायक है।






Related