我通过upper_bound在std::map<int, X>
中找到某个点,然后从此点开始向后迭代。我的代码看起来像:
MAP::reverse_iterator iter;
iter = _map.upper_bound(value); // Does not compile because upper_bound is not reverse_iterator
while(iter != rbegin()){
// logic
--iter;
}
我收到编译错误,因为upper_bound()没有返回reverse_iterator。
解决这个问题的最佳方法是什么?
答案 0 :(得分:0)
您需要将迭代器转换为反向迭代器:
auto iter = _map.upper_bound(value);
for (std::reverse_iterator<decltype(iter)> rit{iter}; rit != _map.rend(); ++rit) {
// Do whatever you want...
}
请注意,在到达_map.rend()
而不是_map.rbegin()
时必须停止,并且需要递增反向迭代器,而不是递减它。