Jon*_*Mee 5 c++ swap dictionary c++11 c++03
如果我有两个,我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"]));
Run Code Online (Sandbox Code Playgroud)
该swap
说法显然是错误的,但解释了我想做的事情.在swap
声明之后我想ps
包含:
{ "triangle", 0 }
{ "x", 3 }
{ "square", 2 }
{ "circle", 3 }
并xbox
包含:
{ "y", 0 }
{ "a", 1 }
{ "b", 2 }
{ "cross", 1 }
我希望有一种很好的方法可以用C++ 11的移动语法来做到这一点,但是如果可能的话,我想要一个答案,它也描述了如何在C++ 03上实现这一点.
map
实现为有序树.
您不能简单地用新密钥替换密钥,因为它可能必须放在树中的其他位置.因此,你无法交换.
删除手动重新插入kv对.
(作为旁注:你甚至没有告诉我们这些价值会发生什么......)