自己紹介
- Rust歴: チュートリアルを読んだ
- 競技プログラミング歴: paizaがSランク行っただけ。その他経験なし。
- Qiita初投稿
#概要
「AtcoderでRust使ってブイブイ言わせたい」というモチベで作りました。色々調べたけど、同じ行に複数の数値が与えられた場合に対応した読み込み関数がなかった。(あったら教えて)
以下のread_line関数を呼び出すごとに、次の行にある任意の個数の数値をVec型に格納して返します。型はu32、f32とかなら動きます。速度に関しては何も調べてないです。
#ソースコード
use std::str::FromStr;
use std::fmt::Debug;
fn read_line<T>() -> Vec<T>
where T: FromStr, <T as FromStr>::Err : Debug{
let mut s = String::new();
std::io::stdin().read_line(&mut s).unwrap();
s.trim().split_whitespace().map(|c| T::from_str(c).unwrap()).collect()
}
#例
###入力テキスト例
2 3 4 5
4 3 5 6
10 12
13 20 34
###関数の使い方
fn main(){
let x : Vec<u32> = read_line();
let num = x[1];
println!("num ={}", num);
for _ in 0..num{
let values: Vec<i32> = read_line();
println!("{:?}", values);
}
}