在 Rust 编程 中,Vec(向量)是最常用、最重要的 Rust 数据结构 之一。它是一个可变长度的动态数组,能够高效地存储和操作一系列相同类型的元素。无论你是刚接触 Rust 向量 的新手,还是希望系统梳理 Rust Vec 用法的开发者,本教程都将为你提供清晰、详尽的讲解。

Vec<T> 是 Rust 标准库提供的一个泛型类型,用于表示一个可增长的、连续内存存储的动态数组。其中 T 表示元素的类型。与固定大小的数组不同,Vec 可以在运行时动态添加或删除元素。
有多种方式可以创建一个向量:
Vec::new()let mut v: Vec<i32> = Vec::new();v.push(1);v.push(2);v.push(3);vec!// 创建并初始化let v = vec![1, 2, 3];// 创建包含5个0的向量let zeros = vec![0; 5]; // [0, 0, 0, 0, 0]你可以通过索引或使用 get 方法安全地访问元素:
let v = vec![10, 20, 30];// 方式1:使用方括号(不安全,越界会 panic)println!("{}", v[0]); // 输出 10// 方式2:使用 get(安全,返回 Option)match v.get(1) { Some(value) => println!("{}", value), None => println!("索引越界!")}由于 Vec 是可变的,你可以在声明为 mut 后对其进行修改:
let mut v = vec![1, 2, 3];v.push(4); // 添加元素到末尾v.pop(); // 移除最后一个元素(返回 Option)v.insert(1, 99); // 在索引1处插入99v.remove(0); // 移除索引0处的元素println!("{:?}", v); // [99, 2, 3]Rust 提供了多种遍历方式:
let v = vec!["apple", "banana", "cherry"];// 不可变引用遍历for item in &v { println!("{}", item);}// 可变引用遍历(用于修改)let mut numbers = vec![1, 2, 3];for num in &mut numbers { *num += 10;}println!("{:?}", numbers); // [11, 12, 13]Vec 在底层使用堆内存分配,具有以下特点:
capacity() 查看当前容量,用 reserve() 预分配空间以避免频繁重分配。let mut v = Vec::with_capacity(10); // 预分配10个元素的空间println!("容量: {}", v.capacity()); // 容量: 10for i in 0..10 { v.push(i);}// 此时不会触发内存重分配v[0],会导致 panic。get 方法进行安全访问。Vec::with_capacity(n) 提高性能。push 而不预分配,可能导致多次内存拷贝。Vec 是 Rust 编程 中不可或缺的工具。掌握 Rust 向量 的创建、访问、修改和性能优化技巧,将极大提升你的开发效率和程序稳定性。无论你是在处理用户输入、解析文件,还是构建复杂的数据结构,Rust Vec 都是你最可靠的伙伴。
希望这篇关于 Rust 数据结构 的教程能帮助你轻松上手 Vec!动手写几个小例子,你会很快熟悉它的用法。
本文由主机测评网于2025-12-06发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025123700.html