< 返回版块

17863963452 发表于 2021-04-10 14:52

Tags:最大值

请问Vec最大值怎么求呢?好像没有现成的函数

评论区

写评论
Bai-Jinlin 2021-04-10 16:52
fn main() {
    let v:Vec<f64>=vec![f64::INFINITY,f64::NAN,1.,2.,f64::NEG_INFINITY];
    let max=v.iter().fold(f64::NEG_INFINITY,|a,&x|{
        x.max(a)
    });
    assert_eq!(max,f64::INFINITY);
}
eweca-d 2021-04-10 16:05
// 对于Vec<i32>这种实现了Ord的,直接求
let a = vec![0, 1];
let b = a.iter().max();

// 对于Vec<f64>这种内部元素只实现了PartiaOrd的,麻烦一点,注意这里没有处理NaN的情况,如果有可能出现NaN你就需要处理它
let a = vec![0.0, 1.0];
a.iter().max_by(|&x, &y| x.partial_cmp(y).unwrap()).unwrap();
1 共 2 条评论, 1 页