Vector 介绍
Vector(向量) 是 Rust 中的一个模块,它为我们提供了存储值的容器空间。它是一个连续的可变大小数组类型,其内容存储在堆内存上。我们用 Vec 来表示它。在 Rust 中,Vector 具有 O(1) 的索引访问复杂度,且在向量上进行 push(推入)和 pop(弹出)操作的复杂度也是 O(1)。此外,Vector 保证了其分配的字节数永远不会超过 isize::MAX。
通俗地说,我们可以把 Vector 看作一个类似于数组的容器,但它比普通的数据结构拥有更多的优势。它可以在运行时动态地增加大小。它由标准库提供,可以存储任何数据类型的值。Vector 的数据分配在堆上。它的 长度(length) 定义了 Vector 中当前存在的元素数量。而它的 容量(capacity) 定义了该 Vector 在堆上实际分配的空间,通常以 2^n 的形式存在。
语法:
Vec
其中 T 表示数据的类型。
在 Rust 中创建 Vector
要创建 Vector,我们可以简单地遵循以下列出的方法。
1. 使用 Vec::new() 方法:
let v : Vec = Vec::new();
这里 v 是一个已初始化的向量,它将包含 64 位整数数据类型。它是在 Vec::new() 方法 的帮助下进行初始化的。
fn main() {
let v : Vec = Vec::new();
// 打印 vector 的大小
println!("{}",v.len());
}
输出:
2. 使用 Rust 中的宏:
let v = vec![‘G‘,‘E‘,‘E‘,‘K‘,‘S‘];
这里使用的是宏 vec! 创建的 Vector。它存储了我们在这里提供的字符类型的值。
fn main() {
let v = vec![‘G‘,‘E‘,‘E‘,‘K‘,‘S‘];
// 打印 vector 的大小
println!("{}",v.len());
}
输出:
访问 Vector
以下列出的方法可用于在 Rust 编程中访问 Vector。
1. 使用下标运算符:
类似于其他语言中的索引概念,我们可以使用下标运算符通过索引直接访问 Vector 中的值。需要注意的是,索引从 0 开始。
let v = vec![‘G‘,‘E‘,‘E‘,‘K;‘,‘S‘];
// 这里的 index 是一个非负整数值,且小于 vector 的大小。
char ch = v [ index ];
示例:
fn main() {
let v = vec![‘G‘,‘E‘,‘E‘,‘K‘,‘S‘];
// 这里的 index 是一个非负整数值,且小于 vector 的大小
let index: usize = 3;
// 获取给定索引处的值
let ch: char = v[index];
print!("{}
",ch);
}
输出:
2. 使用 get() 方法
访问 Vector 元素的第二种方法是使用 INLINECODEcdb76397 方法,并将 Vector 的索引作为参数传递。它返回 INLINECODEfb030894 类型的值。
let v = vec![‘G‘,‘E‘,‘E‘,‘K;‘,‘S‘];
// 这里的 index 是一个非负整数值,且小于 vector 的大小。
let value: Option = v.get(index);
示例:
// 打印 get 值的方法
fn value(n:Option)
{
match n
{
Some(n)=>println!("Element of vector {}",n),
None=>println!("None"),
}
}
fn main() {
let v = vec![‘G‘,‘E‘,‘E‘,‘K‘,‘S‘];
// 这里的 index 是一个非负整数值,且小于 vector 的大小
let index: usize = 3;
// 获取给定索引处的值
let ch: Option = v.get(index);
value(ch);
}
输出:
3. 遍历 Vector:
为了访问 Vector,我们也可以像在其他编程语言中那样遍历它。我们可以使用 for 循环 来遍历 Vector。
let v = vec![‘G‘,‘E‘,‘E‘,‘K;‘,‘S‘];
print!("Vector elements :");
for i in v
{
// 在 vector 上遍历 i
print!("{} ",i);
}
示例:
fn main() {
let v = vec![‘G‘,‘E‘,‘E‘,‘K‘,‘S‘];
print!("Vector elements : ");
// 循环遍历 vector 中的元素
for i in v
{
// 在 vector 上遍历 i
print!("{} ",i);
}
print!("
",);
}
输出:
更新 Vector
创建 Vector 后,我们可以使用 push() 方法来更新它。如果 Vector 的大小小于其容量,它会推入新元素;如果 Vector 的大小大于其容量,它将分配两倍于 Vector 大小的空间,然后将所有元素复制到新