我创建了一张地图:
map<int, int> mapOriginal;
Run Code Online (Sandbox Code Playgroud)
在填充数据后,看起来像这样:
mapOriginal[0] = 3;
mapOriginal[1] = 2;
mapOriginal[2] = 1;
Run Code Online (Sandbox Code Playgroud)
而mapOriginal ouptut是:
0-> 3
1-> 2
2-> 1
Run Code Online (Sandbox Code Playgroud)
我想创建另一张地图:
map<int, int> mapReverse;
Run Code Online (Sandbox Code Playgroud)
但是如何将mapOriginal值反转为mapReverse:
mapReverse ouptut将是:
0-> 1
1-> 2
2-> 3
Run Code Online (Sandbox Code Playgroud)
您可以同时向前和向后迭代地图:
std::map<int, int>::const_iterator forwardIt = mapOriginal.begin();
std::map<int, int>::const_reverse_iterator reverseIt = mapOriginal.rbegin();
for ( ;
forwardIt != mapOriginal.end() ;
++forwardIt, ++reverseIt)
{
mapReverse[forwardIt->first] = reverseIt->second;
}
Run Code Online (Sandbox Code Playgroud)
然而,这似乎是对地图的不寻常使用.你确定矢量不能满足你的需求吗?
std::vector<int> vec { 3, 2, 1 };
std::vector<int> reverseVec;
std::reverse_copy(vec.begin(), vec.end(), std::back_inserter(reverseVec));
// or, if you want to reverse in-place:
std::reverse(vec.begin(), vec.end());
Run Code Online (Sandbox Code Playgroud)