簡體   English   中英

如何不移動就交換地圖元素?

[英]How Can I Swap Map Elements without Moving?

如果我有兩個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 }

我希望可以使用C ++ 11的move語法實現此目的,但是如果可能的話,我希望得到一個答案,該答案還描述了如何在C ++ 03上實現此目的。

map被實現為有序樹。

您不能簡單地用新密鑰替換密鑰,因為可能必須將其放置在樹中的其他位置。 因此,您不能交換。

刪除手動重新插入kv對。

(作為旁注:您甚至沒有告訴我們這些值會發生什么...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM