2011-01-17 15 views
8

प्रोग्राम चलाने के दौरान पॉइंटर्स का उपयोग करके हैशटेबल कुंजी के रूप में कोई समस्या है? (डिस्क पर स्टोर करने और इसे बाद में उपयोग करने की आवश्यकता नहीं है क्योंकि इससे स्पष्ट समस्याएं होती हैं)सी ++: हैशटेबल में एक कुंजी के रूप में सूचक

ऐसी कई परिस्थितियां हैं जहां मुझे तुरंत पता होना चाहिए कि कोई ऑब्जेक्ट किसी ऑब्जेक्ट मैनेजर से संबंधित है या नहीं। इसे जांचने का एक त्वरित तरीका है ऑब्जेक्ट मैनेजर में ऑब्जेक्ट मैनेजर में प्रत्येक ऑब्जेक्ट को स्टोर करना है जहां ऑब्जेक्ट का पॉइंटर वास्तविक ऑब्जेक्ट की कुंजी है: E.g, हैशटेबल

उत्तर

5

नहीं, कोई समस्या नहीं है। यह सिर्फ int संग्रहित करने जैसा है।

एक सूचक को एक मूल्य मिला है जो नहीं बदलता है और यह विशिष्ट रूप से संसाधन की पहचान करता है।

यदि आप अपने पॉइंटर्स को अच्छी तरह से उपयोग नहीं करते हैं तो निश्चित रूप से समस्याएं हो सकती हैं, लेकिन यह एक और, असंबद्ध चीज़ है।

+0

वास्तव में, पॉइंटर्स 'std :: string' से सुरक्षित हो सकते हैं, क्योंकि ये उत्परिवर्तनीय हैं। 'बूस्ट :: हैश' और 'std :: tr1 :: हैश' स्पष्ट रूप से पॉइंटर्स के साथ काम करने के लिए डिज़ाइन किए गए हैं। हालांकि, स्मृति प्रबंधन जटिल हो सकता है। –

0

यह अच्छी तरह से काम करना चाहिए। क्या आप कोई समस्या देख रहे हैं? शायद आपको बस कोशिश करनी चाहिए। :)

0

मेरे सिर के ऊपर से - यदि आपके हैशटेबल द्वारा इंगित मेम स्पेस को आपके पॉइंटर्स द्वारा इंगित मेम स्पेस के संदर्भों को हटाए बिना पहले हटा दिया गया है, तो मेमोरी लीक चारों ओर लटकने जा रही है।

संबंधित मुद्दे