map/set 迭代器不可递减是啥意思?如何使 map.rbegin()->first 工作?
Posted
技术标签:
【中文标题】map/set 迭代器不可递减是啥意思?如何使 map.rbegin()->first 工作?【英文标题】:What is meant by map/set iterator not decrementable? How to make map.rbegin()->first work?map/set 迭代器不可递减是什么意思?如何使 map.rbegin()->first 工作? 【发布时间】:2015-07-22 14:34:03 【问题描述】:我正在尝试获取 map_of_bit_to_parent 地图中的最后一个元素
map<long long, long long> ::reverse_iterator itr_rel = map_of_bit_to_parent.rbegin();
long long total_parent_rels = itr_rel->first;
但是赋值本身导致了运行时错误“map/set iterator not decrementable”
如何进行这样的分配?
【问题讨论】:
你确定地图不是空的吗?在尝试使用过去的迭代器之前检查map_of_bit_to_parent.empty()
。
地图不为空。我已经初始化了它。已经调试过
【参考方案1】:
总是在通过迭代器访问数据之前测试它的有效性。
map<long long, long long> ::reverse_iterator itr_rel = map_of_bit_to_parent.rbegin();
long long total_parent_rels = 0;
if ( itr_rel != map_of_bit_to_parent.rend() )
total_parent_rels = itr_rel->first;
【讨论】:
我只需要将 rbegin()->first(地图中的最后一个键)分配给变量 total_parent_rels @seno71625,地图为空怎么办?以上是关于map/set 迭代器不可递减是啥意思?如何使 map.rbegin()->first 工作?的主要内容,如果未能解决你的问题,请参考以下文章
c++中 map里upper_bound和lower_bound分别怎么理解啊? 主要是想问关键字的上界和下界是啥意思。