Menu
CoddyTech

ベクタの作成

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]

どちらの方法でも同じ種類のベクトルが作成されます。どちらを選ぶかは、初期値があるか、ベクトルを少しずつ作成する予定かによって決まります。

challenge icon

チャレンジ

簡単

ベクターに含める要素数を表す数値が入力として与えられます。入力を読み取り、整数に変換して、その数の要素を持つベクターを作成します。各要素は数値 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個の要素を持つベクターを作成する
    
    
    // 各要素を別々の行に出力する
    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ