मेरे पास एक विस्तारित छवि प्रसंस्करण प्रोजेक्ट है जो इसकी अधिकांश कार्यक्षमता के लिए ओपनसीवी लाइब्रेरी पर भारी निर्भर करता है, हालांकि मैं कुछ बूस्ट फ़ंक्शंस का भी उपयोग करता हूं।ओपनसीवी या बूस्ट स्मार्ट पॉइंटर्स
मैं कुछ कच्चे पॉइंटर्स को बदलने के लिए स्मार्ट पॉइंटर्स का उपयोग शुरू करना चाहता हूं जो समस्याएं पैदा कर रहे हैं। मेरा सवाल यह है कि किस प्रकार का स्मार्ट पॉइंटर उपयोग करना है, मेरे मुख्य विकल्प (मुझे लगता है) ओपनसीवी cv::Ptr
या बूस्ट वेरिएंट्स में से एक है।
मुझे पता है वहाँ questions बढ़ावा संकेत में से प्रत्येक के बीच विभिन्न समझाने का एक number हैं, लेकिन मैं आशा व्यक्त की कि किसी कैसे cv::Ptr
उन लोगों के साथ तुलना की एक विवरण प्रदान करते हैं और एक या दूसरे के किसी भी सुझाव दे सकते हैं सकता है?
संपादित करें - मैंने OpenCV docs से देखा है कि Ptr
shared_ptr
को बढ़ावा देने के समान है, क्या आवश्यक अंतर है जिसमें लाइब्रेरी/फ़ाइलें शामिल हैं?
क्या आपने मानक स्मार्ट पॉइंटर्स का उपयोग करने पर विचार किया है (यदि आपके पास सी ++ 11 तक पहुंच है)? यदि आप C++ 11 का उपयोग कर रहे हैं तो – undu
+1 'std :: shared_ptr' पर +1। अन्यथा यह वास्तव में नीचे आता है कि आप पहले से ही बूस्ट का उपयोग कर रहे हैं या बढ़ावा देने के लिए योजना बना रहे हैं, या बढ़ावा देने के साथ चीजों के साथ अंतःक्रिया कर रहे हैं। मुझे नहीं लगता कि यह 'shared_ptr' के लिए केवल बढ़ावा देने के लायक है, क्योंकि' cv :: Ptr' काफी अच्छी तरह से काम करता है। – yiding
जो आप उपयोग करते हैं, वह आपके द्वारा कॉल किए जा रहे एपीआई पर निर्भर करेगा - स्मार्ट पॉइंटर के इन 3 स्वाद आवश्यक रूप से अदला-बदले नहीं हैं, या रूपांतरण ऑपरेटरों को स्वयं के बीच प्रदान नहीं करते हैं। इस कारण से, बूस्ट लाइब्रेरी के अन्य हिस्सों का उपयोग करते समय 'std :: shared_ptr' के बजाय 'boost :: shared_ptr' कार्यान्वयन का उपयोग करने के अक्सर अच्छे कारण होते हैं। ओपनसीवी के लिए भी यही संभावना है। – marko