क्यों सी नहीं ++ मानक स्मार्ट संकेत (unique_ptr, shared_ptr, ...) नियमित रूप से संकेत (टी *) से तुलना करने के लिए तुलना ऑपरेटरों शामिल होते हैं?नियमित सूचक के साथ स्मार्ट पॉइंटर की तुलना करने का कोई मानक तरीका नहीं है?
टॉम
अद्यतन मैं पता लगाने के लिए कि यह कैसे किया जा सकता है नहीं देख रहा हूँ। प्रश्न यह है कि इसे सी ++ मानक के हिस्से के रूप में क्यों परिभाषित नहीं किया जाता है? Unique_ptr और shared_ptr के लिए ऐसी परिभाषाएं छोटी होंगी। क्लास ए unique_ptr कुंजी के साथ एक नक्शा है:
इस के लिए एक उपयोग के मामले निम्नलिखित है। अद्वितीय प्रबंधन का उपयोग स्मृति प्रबंधन के लिए किया जाता है। जब कक्षा ए के उपयोगकर्ता ने नियमित पॉइंटर पास किया, तो इस मानचित्र के अंदर एक लुकअप किया जाता है। दुर्भाग्य से, मानक तुलना ऑपरेटर परिभाषित नहीं करता है।
स्मार्ट पॉइंटर्स कच्चे पॉइंटर्स के समान नहीं हैं। नाशपाती के साथ सेब की तुलना क्यों करें? –
@ टोनी थीलियन यह पता लगाने के लिए कि कौन सा अधिक स्वादिष्ट है, दुह।(संकेत: यदि यह वास्तव में एक अच्छा सेब है, तो नाशपाती पेंच) :) – jalf
वैसे, भले ही उन तुलनाओं को संभव हो, फिर भी यह आपके विशेष उपयोग मामले को हल नहीं करेगा, जो 'std :: map द्वारा सीमित है ''इंटरफ़ेस और सामान्य रूप से कुंजी प्रकार के लिए अनुमति की तुलना में नहीं। एफवाईआई यह वही समस्या है (एक कच्चे सूचक के साथ 'std :: map' खोज रहा है) हाल ही में यहां लाया गया है। –