我想在地图中找到一个元素map::find(key),然后以相反的顺序从我找到元素的点开始迭代地图,直到开始(即直到 map::rend()).
但是,当我尝试将迭代器分配给reverse_iterator时,我收到编译错误.我该如何解决这个问题?
通过构造函数将迭代器转换为反向迭代器应该可以正常工作,例如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)
明确转换:
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)
| 归档时间: |
|
| 查看次数: |
5763 次 |
| 最近记录: |