如果您有一个键/值对的排序映射(或只是键),其中一个明显的操作是获取第一个或最后一个(或键).
C++的std::vector
方便了front()
与back()
用于这一目的.std::map
没有,但是*map.begin()
和*map.rbegin()
(反向迭代器),用于这方面的工作(假定人知道地图不为空).
在Rust中,获取地图的第一个元素似乎需要map.iter().next().unwrap()
- 丑陋,但考虑到需要进行一些错误检查可能是合理的.
但是我们怎样才能获得最后一个元素呢?通过加强对所有元素:map.iter().last().unwrap()
?
我知道有Iterator::rev()
,map.iter().rev().next().unwrap()
合理的替代方案呢?
它看起来像btree_map::Iter
,这是由返回BTreeMap::iter()
,器具DoubleEndedIterator
,所以的确,无论是与该方法rev()
会工作,或者你可以用next_back()
直接的方法:
let (key, value) = map.iter().next_back().unwrap();
Run Code Online (Sandbox Code Playgroud)
事实上,它确实有效.
归档时间: |
|
查看次数: |
770 次 |
最近记录: |