2013-06-16 15 views
8

मैंएसटीडी का उपयोग करते हुए ::

remove(pvec.begin(), pvec.end(), NULL); 

करने के लिए वेक्टर में शून्य संकेत दूर करने के लिए (जहां pvec vector<Node*> है)

हालांकि कोशिश कर रहा हूँ सूचक तत्वों को हटाने के लिए निकालने के लिए, संकलक देता है:

"आईएसओ सी ++ पॉइंटर और पूर्णांक के बीच तुलना को रोकता है"

इसे कैसे हल करें? धन्यवाद!

उत्तर

16

सी ++ 11 में, nullptr का उपयोग करें:

remove(pvec.begin(), pvec.end(), nullptr); 
//        ^^^^^^^ 

अन्यथा, एक सूचक मूल्य का सुस्पष्ट डाली प्रदर्शन करते हैं। यदि आपके pvec में foo* प्रकार के पॉइंटर्स हैं, तो लिखें:

remove(pvec.begin(), pvec.end(), static_cast<foo*>(NULL)); 
//        ^^^^^^^^^^^^^^^^^ 
+0

अच्छा !!! धन्यवाद। – JASON

+0

@AlanShore: खुशी हुई यह मदद की :) –

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