c++ - Iterator invalidation in boost::unordered_map -


मैं boost :: unordered_map का उपयोग कर रहा हूं

  Typedef बढ़ावा :: shared_ptr & lt; writerExeciter & gt; PtrWriter; Typedef std :: सूची & lt; PtrWriter & gt; PtrList; बढ़ावा :: unordered_map & lt; std :: जोड़ी & lt; अहस्ताक्षरित int, अहस्ताक्षरित लंबे समय & gt ;, PtrList & gt; नक्शा नक्शा instrMap;   

अब मैं एक सूची में PtrList की सूची में कुछ बदलाव कर रहा हूं

  के लिए (यह स्वतः = instrMap। शुरू (), यह! = InstrMap.end (); ++ यह) {ऑटो कुंजी = यह- & gt; पहले (); ऑटो सूची & amp; = यह- & gt; दूसरा (); // सूची में एक तत्व में कुछ बदलाव करें यदि (list.empty ()) {instMap.erase (कुंजी); }}   
  1. क्या सूची में बदलाव करने से इटेटर मैनेजर को अमान्य किया जा सकता है?

  2. तत्व मिटाकर मिटता हुआ तत्व की ओर इशारा करते हुए इटरेटर को अमान्य कर देगा। मैं अपने कोड को कैसे संशोधित कर सकता हूं ताकि इससे कोई समस्या न हो? इसे ++ के बजाय सहायता

    धन्यवाद

    >

    मिट () ऑपरेशन इटरेटर को रद्द कर देगा हालांकि, यह अगले तत्व के लिए एक वैध इटरेटर देता है। तो आप निम्न की तरह कुछ का उपयोग कर सकते हैं: <प्री> के लिए (स्वतः = instrMap.begin (); it! = InstrMap.end ();) {auto key = it- & gt; पहले ( ); ऑटो सूची & amp; = यह- & gt; दूसरा (); // सूची में एक तत्व में कुछ बदलाव करें यदि (list.empty ()) {यह = instMap.erase (यह); } और {++; }}

Comments

Popular posts from this blog

java - NullPointerException for a 2d Array -

python - Assemble mpeg file unable to play in mediaplayer -

c# - NameSpace Manager or XsltContent to parse aspx page -