【Rust】動態陣列(一)
阿新 • • 發佈:2022-05-28
環境
- Time 2022-03-16
- Rust 1.59.0
概念
動態陣列分配在棧上,長度可以變化。
示例
new
新建一個動態陣列,如果沒有增加元素,不會分配堆空間。
fn main() {
let vec: Vec<i32> = Vec::new();
println!("{vec:?}");
}
with_capacity
分配一個固定大小的空間。
fn main() {
let mut vec = Vec::with_capacity(1);
vec.push(4);
println!("{vec:?}");
}
vec
使用 vec 巨集建立一個動態陣列。
fn main() {
let vec = vec![4];
println!("{vec:?}");
}
from_raw_parts
直接從另一個動態陣列的原始資訊建立。
use std::{mem, ptr}; fn main() { let v = vec![1, 2, 3]; // 不會自動銷燬 let mut v = mem::ManuallyDrop::new(v); let p = v.as_mut_ptr(); let len = v.len(); let cap = v.capacity(); unsafe { for i in 0..len as isize { ptr::write(p.offset(i), 4 + i); } let rebuilt = Vec::from_raw_parts(p, len, cap); println!("{rebuilt:?}"); } }
capacity
獲取動態陣列的容量。
fn main() {
let mut vec = Vec::new();
vec.push(0);
let capacity = vec.capacity();
println!("{capacity}");
}
總結
瞭解了動態陣列中相關的一些方法。