ベクターを作成して値を入れる
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ベクターを作成して値を入れる
- インデックス指定と反復処理
- 拡張と縮小
- 構造体のベクター