反向映射值c ++

Car*_*ark 1 c++ reverse map

我创建了一张地图:

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)

Luc*_*lle 6

您可以同时向前和向后迭代地图:

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)