c++ - std::map::iterator references non-existing object? -


निम्न कोड को ध्यान में रखते हुए:

  वर्ग MyClass {सार्वजनिक: int someInt; मायक्लास (): कुछ इंट (666) {}}; Int main () {std :: map & lt; int, MyClass & gt; myMap; Std :: map & lt; int, MyClass & gt; :: iterator = myMap.end (); कॉन्स्ट मायक्लास & amp; रेफरी = यह- & gt; दूसरा; Std :: cout & lt; & lt; Ref.someInt & lt; & lt; std :: endl; }   

चूंकि नक्शा खाली है और यह = myMap.end () , क्या वस्तु it-> second संदर्भ करता है? क्या यह एक अमान्य संदर्भ है क्योंकि यह = myMap.end () ?

मानचित्र & lt; int, MyClass & gt; का एक उदाहरण नहीं बनाता है MyClass

वस्तु क्या it-> दूसरा < / कोड> संदर्भ? क्या यह एक अमान्य संदर्भ है क्योंकि यह = myMap.end () ?

वास्तव में myMap.end () एक वैध इटरेटर है लेकिन यह dereferenced नहीं होना चाहिए। यह-> दूसरा सही ढंग से करने का प्रयास करता है और अपरिभाषित व्यवहार का कारण बनता है।

मानचित्र & lt; int, MyClass & gt; एक उदाहरण MyClass का।

यह सच है, लेकिन अप्रासंगिक myMap.end () हमेशा myMap â ???? की सामग्री की कोई बात नहीं होगी एक पिछले एक अंत के लिए एक संदर्भ होते हैं ?? इटरेटर, जिसे कभी भी डीरेंस नहीं किया जाना चाहिए।

Comments