在 Rust 中,Vector(向量)是一种动态数组类型,它可以在运行时自动调整大小。Vector 是 Rust 标准库中的一个集合类型,提供了灵活、高效的数组操作。
vector 可存放多个值,Vec<T>叫做vector。
由标准库提供;
可存储多个值;
只能存储相同类型的数据;
值在内存中连续存放;
1. 使用 Vec::new 函数创建 vector:
fn main() {
let mut v:Vec<i32> = Vec::new();
v.push(1);
println!("{:?}", v)
}
2. 使用初始值创建Vec<T>,使用vec!宏
let v = vec![1, 2, 3];
// 推断std::vec::Vec<i32>类型
向 Vector 添加元素,使用push方法
let mut v = Vec::new();
v.push(1); // 因添加了元素,编译器可推断出类型是Vec<i32>
v.push(2);
与任何其它struct一样,当Vector离开作用域后,它将被清理,且所有元素也将被清理。
引用vector里的值的两种方式:索引、get方法。针对越界访问,索引的方式会导致程序崩溃(panic),get的方式会返回None。
示例 :
fn main() {
let mut v:Vec<i32> = Vec::new();
v.push(1);
let v1:i32 = v[0];
println!("{}",v1);
let mut t2:i32 = 0;
match v.get(1) {
Some(x) => t2 = *x,
None => println!("None")
}
print!("{}", t2);
t2 = 8;
println!("{}", t2);
}
fn main() {
let v: Vec<i32> = vec![1,2,3,4,5];
for vn in v {
println!("{}", vn);
}
}
vector只能存储一种类型,有时需要存放多种类型,则结合enum来完成。因为enum的变体可附加不同类型的数据,enum变体定义在同一个enum类型下。
enum Demo {
Int(i32),
Float(f32),
String(String),
}
fn main() {
let data: Vec<Demo> = vec![
Demo::Int(1),
Demo::Float(1.1),
Demo::Int(2),
Demo::String(String::from("hello"))];
for v in data {
match v {
Demo::Int(i) => println!("int: {}", i),
Demo::Float(f) => println!("float: {}", f),
Demo::String(s) => println!("string: {}", s),
}
}
}