[英]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.