从给定的映射迭代器反向迭代

Ove*_*dge 3 c++ stl map

我想在地图中找到一个元素map::find(key),然后以相反的顺序从我找到元素的点开始迭代地图,直到开始(即直到 map::rend()).

但是,当我尝试将迭代器分配给reverse_iterator时,我收到编译错误.我该如何解决这个问题?

pmr*_*pmr 9

通过构造函数将迭代器转换为反向迭代器应该可以正常工作,例如std::map<K, V>::reverse_iterator rit(mypos).

使用std :: vector的最小示例:

#include <vector>
#include <iostream>
#include <algorithm>

int main() {
  typedef std::vector<int> intVec;
  intVec vec;
  for(int i = 0; i < 20; ++i) vec.push_back(i);

  for(intVec::reverse_iterator it(std::find(vec.begin(), vec.end(), 10));
      it != vec.rend(); it++)
    std::cout << *it;
}
Run Code Online (Sandbox Code Playgroud)


Bjö*_*lex 5

明确转换:

std::map<int, int> SomeMap;

for ( int i = 0; i < 10; i++)
    SomeMap[ i ] = i;

std::map<int, int>::iterator it = SomeMap.find( 5 );
std::map<int, int>::reverse_iterator itr( it );

for ( itr; itr != SomeMap.rend( ); itr++ )
    std::cout << itr->first << std::endl;
Run Code Online (Sandbox Code Playgroud)