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());
参考
リンク