向量
可增长的数组
向量 是 CoddyKit 上的免费 Learn Rust Coding 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn Rust Coding 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn Rust Coding 课程共包含 4 节课。
什么是向量?
Vec<T> 是一种可增长数组。与固定大小的数组不同,向量可以在运行时增长或缩小。
所有元素都必须是相同的类型 T。
fn main() {
let v: Vec<i32> = Vec::new();
println!("empty vector with length {}", v.len());
}使用 vec! 创建
vec! 宏是使用初始值创建向量的最简单方式。
fn main() {
let numbers = vec![1, 2, 3, 4];
println!("{:?}", numbers);
}添加元素
使用 push 将元素追加到末尾。要修改向量,它必须是 mut。
fn main() {
let mut v = Vec::new();
v.push(10);
v.push(20);
v.push(30);
println!("{:?}", v);
}删除元素
pop 会删除并返回最后一个元素,返回值包装在 Option 中。如果向量为空,它会返回 None。
fn main() {
let mut v = vec![1, 2, 3];
let last = v.pop();
println!("removed {:?}, now {:?}", last, v);
}通过索引访问
像数组一样,使用方括号为向量建立索引。超出范围的索引会导致程序发生恐慌。
fn main() {
let v = vec!["a", "b", "c"];
println!("first {}", v[0]);
println!("third {}", v[2]);
}使用 get 安全访问
get 方法会返回 Option,而不会引发恐慌,因此处理未知索引时更加安全。
fn main() {
let v = vec![10, 20, 30];
match v.get(5) {
Some(x) => println!("found {}", x),
None => println!("no element there"),
}
}遍历向量
使用 for 循环遍历向量中的元素。使用 & 可以借用每个元素,而不获取其所有权。
fn main() {
let v = vec![100, 200, 300];
for item in &v {
println!("item {}", item);
}
}遍历时进行修改
使用 &mut 进行遍历,可以直接修改每个元素。使用 * 取消引用即可更改值。
fn main() {
let mut v = vec![1, 2, 3];
for item in &mut v {
*item *= 10;
}
println!("{:?}", v);
}向量长度与空状态
使用 len() 获取元素数量,使用 is_empty() 检查向量是否没有元素。
fn main() {
let v = vec![5, 6];
println!("len {} empty {}", v.len(), v.is_empty());
}常用向量方法
向量提供了许多辅助方法:
contains— 检查是否包含某个元素。first/last— 以 Option 形式获取首尾元素。sort— 对元素进行排序。
fn main() {
let mut v = vec![3, 1, 2];
v.sort();
println!("{:?} contains 2: {}", v, v.contains(&2));
}使用迭代器求和
将向量与迭代器方法结合起来,可以简洁地计算总和。
fn main() {
let v = vec![10, 20, 30, 40];
let total: i32 = v.iter().sum();
println!("total {}", total);
}快速检查
回顾可以使向量增长的方法。
总结
Rust 中的向量:
Vec<T>是一种可增长且元素类型相同的列表。- 使用
Vec::new()或vec![...]创建。 push从末尾添加元素,pop从末尾删除元素。- 可以使用
[]访问,也可以使用get安全访问。 - 使用
for x in &v进行遍历。
fn main() {
let mut scores = vec![80, 90];
scores.push(100);
let avg: i32 = scores.iter().sum::<i32>() / scores.len() as i32;
println!("average {}", avg);
}常见问题解答
「向量」课时是免费的吗?
是的 — 「向量」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn Rust Coding 课程的其余内容,请升级到 CoddyKit PRO。 Learn Rust Coding 课程共包含 4 节课。
「向量」这节课中我会学到什么?
可增长的数组 你通过在浏览器中直接运行的动手代码来练习 Learn Rust Coding,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn Rust Coding 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn Rust Coding 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「向量」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn Rust Coding 课中编写并运行代码吗?
能。每节 Learn Rust Coding 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。