获取BTreeMap中最大值的密钥的惯用方法



我需要获取与BTreeMap中最大关联的。(反过来做很简单。(

到目前为止,我的尝试是:

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来获得每对的迭代器。然后在迭代器上调用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);

相关内容

最新更新