c++ - update map value -


मेरे पास इस तरह एक नक्शा है:

  मानचित्र & lt; prmNode, vector & lt; prmEdge & gt; prmNodeComparator & gt; nodo2archi;  

जब मुझे वैल्यू (वेक्टर) अपडेट करना पड़ता है, तो मैं चाबी और उसका मान लेता हूं, मैं वैक्टर के वैक्टर को अपडेट करता हूं, मैं पुरानी चाबी और मूल्य को मिटा देता हूं, तब मैं चाबी डालो नया सदिश कोड यह है:

  bool prmPlanner :: insert_edgemap (से int, int से) {prmEdge e; (से) e.setFrom; (करने के लिए) e.setTo; नक्शा & LT; prmNode, वेक्टर & LT; prmEdge & gt; & Gt; :: इटरेटर; के लिए (यह = nodo2archi.begin (); it! = Nodo2archi.end (); यह ++) {वेक्टर & lt; prmEdge & gt; appo; प्रमोनोड एन; एन = (यह *) प्रथम, Int indice = n.getIndex (); अगर (इंडिस == एफ || इंडिस == टी) {appo.clear (); वेक्टर के & lt; prmEdge & gt; incArchi; incArchi = (यह *) .second; appo = (incArchi); appo.push_back (ई); nodo2archi.erase (यह); Nodo2archi.insert (मेक-पेयर (एन, एपीओ)); }} सही सत्य; }  

समस्या यह है कि पहले 40-50 पुनरावृत्तियों के लिए सब कुछ ढूढ़ हो जाते हैं और नक्शे को अच्छी तरह से अपडेट किया जाता है, जबकि अधिक पुनरावृत्तियों के साथ यह कभी-कभी विभाजन गलती में होता है, कभी-कभी अनंत बेकार में। मुझे पता नहीं क्यों कोई मुझे मदद कर सकता है ?? बहुत-बहुत धन्यवाद।

क्या आप बस कुछ मैप किए गए वैक्टर को डेटा जोड़ने की कोशिश कर रहे हैं? इस मामले में आपको कुछ भी मिटाने और सम्मिलित करने की आवश्यकता नहीं है:

  के लिए (MapType :: iterator = map.begin (); it! = Map.end (); ++ यह ) {If (some_condition) {it- & gt; सेकंड.push_back (some_value); }}  

Comments

Popular posts from this blog

.net - C# List<T>.Find(x=>x.Rectangle.Contains(Point)) FAIL -

iphone - Smoothing a rounded stroke in Core Graphics -

Best practice for URL redirection in ASP.NET web application -