2015-04-13 9 views
5

अगर मैं दो map<string, int> रों है कि कैसे मैं प्रत्येक map से एक तत्व स्वैप कर सकते हैं?मैं बिना मूविंग के मैप एलिमेंट्स कैसे स्वैप कर सकता हूं?

उदाहरण के लिए:

map<string, int> ps{ { "triangle", 0 }, { "cross", 1 }, { "square", 2 }, { "circle", 3 } }; 
map<string, int> xbox{ { "y", 0 }, { "a", 1 }, { "b", 2 }, { "x", 3 } }; 

swap(move(ps["cross"]), move(xbox["x"])); 

swap बयान स्पष्ट रूप से गलत है, लेकिन वह बताते हैं कि मैं क्या करना चाहते हैं। swap बयान के बाद मैं ps चाहते हैं को रोकने के लिए:

  • { "triangle", 0 }
  • { "x", 3 }
  • { "square", 2 }
  • { "circle", 3 }

और xbox को रोकने के लिए:

  • { "y", 0 }
  • { "a", 1 }
  • { "b", 2 }
  • { "cross", 1 }

मैं उम्मीद वहाँ सी ++ 11 के इस कदम वाक्य रचना के साथ ऐसा करना एक अच्छा तरीका है, लेकिन यदि संभव हो तो मैं एक जवाब है कि यह भी पसंद करेंगे वर्णन करता है कि इसे C++ 03 पर कैसे पूरा किया जाए।

+0

आप गमागमन "पार" के साथ "x" नहीं कर रहे हैं। आप पीएस से एक्सबॉक्स तक "क्रॉस" और एक्सबॉक्स से पीएस तक "एक्स" ले जा रहे हैं। वे दो असंबंधित संचालन हैं। –

+0

@NeilKirk ठीक है इसलिए मैं इस सवाल में कहता हूं "स्वैप कथन स्पष्ट रूप से गलत है, लेकिन यह बताता है कि मैं क्या करना चाहता हूं।" तत्वों को विपरीत 'मानचित्र' पर ले जाना, जो मैं करने की कोशिश कर रहा हूं, जैसा कि मैं समझता हूं कि परिणामस्वरूप 'नक्शा' जैसा दिखना है। –

+1

मुझे किसी भी तरह से पता नहीं है। मैं इसके बारे में चिंता नहीं करता जबतक कि यह वास्तव में एक प्रदर्शन मुद्दा नहीं है। इस मामले में आपको पता चल सकता है कि एक फ्लैट मैप (डेटा संरचना जो मुझे विश्वास है) में भी तेजी से हो सकती है। –

उत्तर

5

map एक आदेश दिया पेड़ के रूप में कार्यान्वित किया जाता है।

आप के रूप में यह पेड़ के किसी अन्य स्थान पर रखा जा करना पड़ सकता है नहीं बस एक नया कुंजी के साथ एक महत्वपूर्ण जगह ले सकता है। नतीजतन, आप स्वैप नहीं कर सकते हैं।

हटाना k-वी जोड़े मैन्युअल फिर से डालें।

(एक sidenote के रूप: आप भी हमें नहीं बताया क्या मूल्यों के साथ होता है है ...)

+0

उह, मैं यही कर रहा था, लेकिन यह बहुत बदसूरत है। मैं प्रश्न में मूल्य जोड़ दूंगा। –

+1

हालांकि यह अच्छा होगा, अगर कोई नक्शा तत्व को किसी अन्य मानचित्र पर कुंजी कॉपी करने के बिना स्थानांतरित कर सकता है (मान आसानी से स्थानांतरित किया जा सकता है)। –

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

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