如何解决在BTreeMap中获得最大价值的键的惯用方式?
我需要获取与BTreeMap中最大 value 相关的 key 。 (相反,这样做很简单。)
到目前为止,我的尝试是:
let mut opt_pair: Option<(&Foo,u32)> = None;
for (key,value) in my_btreemap { // my_btreemap is known to be non-empty
match opt_pair {
Some(pair) => {
if value > pair.1 {
opt_pair = Some((key,value));
}
},None => {
opt_pair = Some((key,value));
}
}
}
opt_pair.unwrap().0
是否有一种惯用的方式来实现这种功能,更实用?
解决方法
使用iter
获得每对中的Iterator。然后在迭代器上调用max_by_key
;这需要关闭才能进行比较。
let opt_pair = map
.iter() // get an iterator over the tree
.max_by_key( |p| p.1 ) // check the value of each pair for the max
.unwrap(); // unwrap the result
println!("key: {},value: {}",opt_pair.0,opt_pair.1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。