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分别怎么理解啊? 主要是想问关键字的上界和下界是啥意思。

从二叉搜索树中的 end() 迭代器递减迭代器

pig中“无法打开别名的迭代器”是啥意思?

python迭代器是啥意思

HashMap 的迭代器是快速失败的,而 HashTable 的枚举器不是,你到底是啥意思?

JAVA迭代器Iterator