yiskw note

機械学習やプログラミングについて気まぐれで書きます

Rustでベクター型から最大値/最小値を取り出す方法


Rustのベクター型から最大値/最小値を取り出す方法がわからなかったので,
こちらに調べた内容をメモしておきます.

何か間違っている点があればコメントにて指摘していただけると嬉しいです.

方法

Vec<T>に対してiterメソッドを呼んでイテレータを作成し, イテレータに対してmax / minメソッドを実行すれば良いです.

その際の返り値がOption<T>型になっているので, match式を使用してパターンマッチする必要があります.

追記
今回のように値が格納されていることが保証されている場合,
match式を使わずにunwrapメソッドを用いても良いようです.

let v: Vec<i32> = vec![1, 2, 3, 4, 5, 6];

let min: i32;
let max: i32;

// 最小値
match v.iter().min() {
    Some(n) => min = *n,
    None => unreachable!(),
}

// 最大値
match v.iter().max() {
    Some(n) => max = *n,
    None => unreachable!(),
}

println!("最小値: {}", min);
println!("最大値: {}", max);

// unwrapメソッドを使用
println!("最小値: {}", v.iter().min().unwrap());
println!("最大値: {}", v.iter().max().unwrap());

参考