RCIE-ジャンクのコード屋

主に自分のためにコーディングのTIPSを蓄積しています。

Rust 配列の使い方 vec!, iter, enumerate

概要

  • 同じ型の変数を大量に作る代わりに、配列を使うと便利。
  • 配列には固定配列と伸長可能な配列の2種類がある。
  • for文で今何番目を処理しているか知りたいときは「iter().enumerate()」を使う。

配列を使う場面

  • 5つの変数に入った数値を足し合わせるプログラムを考える。
fn main() {
    let0 = 3;
    let1 = 1;
    let2 = 4;
    let3 = 1;
    let4 = 5;
    println!("{}", 数0 +1 +2 +3 +4);
}
  • 今回は5つ変数を用意したが、配列を使うとスッキリする。
fn main() {
    let 配列 = [3, 1, 4, 1, 5];
    println!("{}", 配列[0] + 配列[1] + 配列[2] + 配列[3] + 配列[4]);
}
  • 大量の数の合計を計算する場合も、ループで回せば問題ない。
fn main() {
    let 配列 = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8 ,9, 7, 9];
    let mut 合計 = 0;
    for n in 配列 {
        合計 += n;
    }
    println!("{}", 合計);
}
伸長可能な配列 vec!
  • 上で説明した配列は、途中で長さを変えることができない。
  • 伸長可能な配列を作るには「vec!」を使う。
  • よほど速度に制約がない限りはこちらを使うとよさそう。
fn main() {
    let mut 配列 = vec![3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8 ,9, 7, 9];
    // └ あとで編集するので mut をつける。
    配列.push(3); // push(...)で末尾に追加できる
    let mut 合計 = 0;
    for n in 配列 {
        合計 += n;
    }
    println!("{}", 合計);
}
配列の繰り返し処理で「今、何番目?」
  • 繰り返し文「for n in 配列 {...}」では、今何番目の値を処理しているのか分からない。
  • 何番目なのかを得るためには「iter().enumerate()」を使う。
fn main() {
    let 配列 = vec![3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8 ,9, 7, 9];
    for i in 配列.iter().enumerate() {
        println!("{}番目は{}", i.0, i.1);
        // └ i.0 に何番目かという情報が入っている。
    }
}