ベクタの作成
CoddyのRustジャーニー「論理とフロー」セクションの一部。レッスン 8/66。
ベクトルとは何かを理解したところで、ベクトルの作成方法を学びましょう。Rustでは、ベクトルを作成する主な方法が2つあり、それぞれ異なる状況に適しています。
最初の方法では、Vec::new()を使って、後から要素を追加できる空のベクターを作成します。
let mut numbers = Vec::new();この空のベクターには後で要素を追加したくなる可能性が高いため、mutを使っていることに注目してください。Rustは空のベクターの型を常に判断できるとは限らないため、明示的に指定する必要がある場合があります。
let mut numbers: Vec<i32> = Vec::new();2つ目の方法では、vec![]マクロを使って初期値を持つベクターを作成します。
let numbers = vec![1, 2, 3, 4, 5];開始時の値がわかっている場合は、vec![]マクロを使うと便利です。Rustは指定した値から型を自動的に判断できるため、型注釈は必要ありません。このベクターには5つの整数が含まれており、すぐに使用できます。
vec![]マクロは、同じ値で埋められたベクターを作成するための繰り返し構文にも対応しています。vec![value; n]を使うと、各要素がvalueに設定されたn個の要素を持つベクターを作成できます。
let zeros = vec![0; 5]; // [0, 0, 0, 0, 0]
let tens = vec![10; 3]; // [10, 10, 10]これは、たとえばユーザー入力から、実行時に決まる特定のサイズのベクターを作成したい場合に特に便利です。
let n = 4;
let data = vec![10; n]; // [10, 10, 10, 10]どちらの方法でも同じ種類のベクトルが作成されます。どちらを選ぶかは、初期値があるか、ベクトルを少しずつ作成する予定かによって決まります。
チャレンジ
簡単ベクターに含める要素数を表す数値が入力として与えられます。入力を読み取り、整数に変換して、その数の要素を持つベクターを作成します。各要素は数値 10 とします。
要件:
- 入力を読み取り、整数に変換する
vec![]マクロを使ってベクターを作成する- ベクターに指定された数の要素を含める
- 各要素の値を
10にする - 各要素を別々の行に出力する
入力: 要素数を表す単一の整数
出力: ベクターの各要素を別々の行に出力する
自分で試してみよう
use std::io;
fn main() {
// 入力を読み取る
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let n: usize = input.trim().parse().expect("Invalid input");
// TODO: 以下にコードを書く
// 各要素の値が10である、n個の要素を持つベクターを作成する
// 各要素を別々の行に出力する
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ