अगर मैं दो 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 पर कैसे पूरा किया जाए।
आप गमागमन "पार" के साथ "x" नहीं कर रहे हैं। आप पीएस से एक्सबॉक्स तक "क्रॉस" और एक्सबॉक्स से पीएस तक "एक्स" ले जा रहे हैं। वे दो असंबंधित संचालन हैं। –
@NeilKirk ठीक है इसलिए मैं इस सवाल में कहता हूं "स्वैप कथन स्पष्ट रूप से गलत है, लेकिन यह बताता है कि मैं क्या करना चाहता हूं।" तत्वों को विपरीत 'मानचित्र' पर ले जाना, जो मैं करने की कोशिश कर रहा हूं, जैसा कि मैं समझता हूं कि परिणामस्वरूप 'नक्शा' जैसा दिखना है। –
मुझे किसी भी तरह से पता नहीं है। मैं इसके बारे में चिंता नहीं करता जबतक कि यह वास्तव में एक प्रदर्शन मुद्दा नहीं है। इस मामले में आपको पता चल सकता है कि एक फ्लैट मैप (डेटा संरचना जो मुझे विश्वास है) में भी तेजी से हो सकती है। –