0Pricing
Learn Rust Coding · レッスン

ベクターを作成して値を入れる

Vecを作成して要素を追加します。

「ベクターを作成して値を入れる」はCoddyKit上の無料Learn Rust Codingレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn Rust Coding学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn Rust Codingコースには全4レッスンが含まれています。

ベクターとは

ベクターは、同じ型の値を並べた、サイズを変更できるリストです。固定サイズの配列とは異なり、プログラムの実行中にサイズを増減できます。

Rustでは型をVec<T>と記述します。Tは保持する要素の型で、整数の場合はVec<i32>のように書きます。

空のベクター

Vec::new()を使うと、新しい空のベクターを作成できます。まだ値がないため、Rustは要素の型を推測できず、通常は型注釈を付けます。

ここでは、このベクターがi32整数を保持するとRustに伝えています。

fn main() {
    let v: Vec<i32> = Vec::new();
    println!("len = {}", v.len());
}

vec!マクロ

初期値を持つベクターを作成する最も簡単な方法は、vec!マクロです。角かっこの中に値を並べます。

Rustは値から要素の型を推測するため、ここでは型注釈は必要ありません。

fn main() {
    let nums = vec![10, 20, 30];
    println!("{:?}", nums);
}

ベクターの表示

ベクター全体を表示するには、通常の{}ではなく、デバッグフォーマッタ{:?}を使います。デバッグ形式では、角かっこの中に値が表示されます。

ベクターが大きい場合は、{:#?}を使うと見やすい複数行形式で表示できます。

fn main() {
    let names = vec!["Ann", "Bo", "Cy"];
    println!("{:?}", names);
}

値の追加

ベクターの末尾に値を追加するには、pushを呼び出します。pushによって変更されるため、ベクターはmutで宣言する必要があります。

1回のpushで1つの要素が追加され、長さが1増えます。

fn main() {
    let mut v = Vec::new();
    v.push(1);
    v.push(2);
    v.push(3);
    println!("{:?}", v);
}

最初のpushによる型の決定

Vec::new()から始めて型注釈を付けない場合、Rustは最初のpushまで待って要素の型を決定します。

下の例では、3.5をpushすることで、これはVec<f64>だとRustに伝わります。後続のすべての値もこの型でなければなりません。

fn main() {
    let mut prices = Vec::new();
    prices.push(3.5);
    prices.push(9.0);
    println!("{:?}", prices);
}

繰り返しによる初期化

vec!マクロでは、値を繰り返してベクターを作成できます。vec![value; count]と書くと、その値をcount回繰り返したベクターが作られます。

ゼロやデフォルト値のリストを準備するときに便利です。

fn main() {
    let zeros = vec![0; 5];
    println!("{:?}", zeros);
}

ループでの追加

ループ内でpushして、ベクターを埋めることができます。ここでは、1から4までの数の平方を追加します。

空の状態から始め、値を計算しながら追加していくのは一般的なパターンです。

fn main() {
    let mut squares = Vec::new();
    for n in 1..=4 {
        squares.push(n * n);
    }
    println!("{:?}", squares);
}

容量と長さの違い

長さは、ベクターが現在保持している要素の数です。容量は、メモリを拡張する前に予約されている領域の大きさです。

追加する要素数のおおよその見当がついている場合は、Vec::with_capacity(n)であらかじめ領域を確保すると、何度も再割り当てするのを避けられます。

fn main() {
    let mut v = Vec::with_capacity(10);
    v.push(1);
    println!("len {}, cap {}", v.len(), v.capacity());
}

配列から作成する

配列をベクターに変換できます。簡単な方法の1つは.to_vec()で、配列の要素を新しい所有ベクターにコピーします。

固定データから始めて、後からサイズを増やしたい場合に便利です。

fn main() {
    let arr = [1, 2, 3];
    let v = arr.to_vec();
    println!("{:?}", v);
}

空かどうかの確認

is_empty()を使うと、ベクターに要素がないか確認できます。これはboolを返すため、長さを0と比較するより意図が明確です。

最初の要素を読み取る前の確認として適しています。

fn main() {
    let v: Vec<i32> = Vec::new();
    if v.is_empty() {
        println!("nothing here yet");
    }
}

簡単な確認

ベクターの作成と初期化についての理解を確認しましょう。

まとめ

Vec::new()とvec!マクロでベクターを作成し、push、繰り返し、ループ、to_vec()を使って要素を追加する方法を学びました。

長さと容量の違い、空かどうかの確認方法も見ました。次はベクターの値を読み取り、ループします。

よくある質問

「ベクターを作成して値を入れる」レッスンは無料ですか?

はい。「ベクターを作成して値を入れる」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn Rust Codingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn Rust Codingコースには全4レッスンが含まれています。

「ベクターを作成して値を入れる」で何を学びますか?

Vecを作成して要素を追加します。 ブラウザで直接実行するハンズオンコードでLearn Rust Codingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn Rust Codingを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn Rust Codingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ベクターを作成して値を入れる」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn Rust Codingレッスンでコードを書いて実行できますか?

はい。すべてのLearn Rust Codingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ベクターを作成して値を入れる
  2. インデックス指定と反復処理
  3. 拡張と縮小
  4. 構造体のベクター
← Learn Rust Codingに戻る