新しいベクタの作り方
let mut vec: Vec<f64> = Vec::new();
let mut vec: Vec<f64> = Vec::with_capacity(1024);
let mut vec: Vec<f64> = vec![ 0., 1., 2., 3. ];
let mut vec: Vec<f64> = vec![ 0.; 16 ];
let mut vec = (0..16).map(|x| x as f64).collect::<Vec<f64>>(); // 連続する数字を要素とするベクタをイテレータを経由して生成
// mapの部分をいじるか, イテレータアダプタを使えばもっといろいろなことができる
// https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/iterators.html
要素の挿入
vec.push( 3.14 ); // ベクタの最後に要素3.14を追加する
vec.insert( 2, 3.14 ); // vec[2] = 3.14となるように要素を挿入し, その後ろの要素を一個ずつずらす
// メソッドinsert( index, element ) はindex > vec.len()のときパニックを引き起こす
vec.append( vec2 ); // ふたつのベクタを連結する (Pythonでいうリストのextend)
要素の除去
vec.remove(4); // 4番目の要素vec[3]を除去し, 後ろの要素を一個ずつ詰める
vec.swap_remove(4); //4番目の要素vec[3]を除去し, 最後の要素vec[vec.len()-1]をvec[3]に入れる
// メソッドswap_removeはO(1)で動作するのに対して, removeの方が時間がかかる
let x: f64 = vec.pop(); // 最後の要素を取り出し, それを返す (従ってこの処理によりvec.len()は1小さくなる)
let vec2: Vec<f64> = vec.split_off(4); vecは最初の4要素を残して, 除去された部分をvec2として束縛する
// split_off( at ) は at > len のときパニックを引き起こす
vec.truncate(4); // 長さ4になるように後ろの要素を除去
vec.clear(); // すべての要素を除去
おまけ
for x in vec.iter() {
println!("x = {}", x );
}
コメント
コメントを投稿