检查点
向量简介
本课讨论 Rust 中的向量。
什么是向量?
向量是可调整大小的数组,意味着它们的大小可以动态增长或缩小。
创建向量
有两种方式可以创建向量:
语法
要创建一个向量,使用向量宏(vec!),后跟用方括号包围的向量元素。
...
定义一个向量
在尖括号中可选地指定向量的类型和大小。在定义向量元素之前使用向量宏(vec!)。
...
定义一个向量
1fn main() { 2 // 定义一个大小为5的向量 3 let my_vec = vec![1, 2, 3, 4, 5]; 4 // 打印向量 5 println!("{:?}", my_vec); 6}
注意: 与数组一样,也可以使用
println!()宏将向量显示在屏幕上。
访问向量中的元素
可以通过在向量名称后加上用方括号 [ ] 包围的索引号来访问向量中的任意值。
1fn main() { 2 // 定义一个大小为5的向量 3 let my_vec = vec![1, 2, 3, 4, 5]; 4 // 访问特定值 5 println!("{}", my_vec[0]); 6}
注意: 如果尝试访问不存在的索引,程序会在运行时因越界访问而报错(panic),❌。
以下代码展示了这一情况:
1fn main() { 2 // 定义一个大小为5的向量 3 let my_vec = vec![1, 2, 3, 4, 5]; 4 // 访问不存在的索引 5 eprintln!("{}", my_vec[9]); 6}
为处理越界访问,可以使用 .get() 方法并配合 None 来匹配。
1fn main() { 2 let my_vec = vec![1, 2, 3, 4, 5]; 3 match my_vec.get(9) { 4 Some(x) => println!("指定索引处的值:{}", x), 5 None => println!("抱歉,您访问的是越界的值") 6 } 7}
打印向量
可以使用循环或调试特性(debug trait)遍历整个向量。
1fn main() { 2 println!("使用调试特性打印"); 3 let my_vec = vec![1, 2, 3, 4, 5]; 4 // 使用调试特性 5 println!("向量 : {:?}", my_vec); 6 println!("使用 for 循环打印"); 7 // 使用循环 8 let mut index = 0; 9 for i in my_vec { 10 println!("索引 {} 处的元素:{} ", index, i); 11 index = index + 1; 12 } 13}
向量的方法
向量的方法总结如下图所示:
...
向量方法
以下代码演示了上述所有方法:
1fn main() { 2 let mut my_vec = Vec::new(); 3 println!("空向量 : {:?}", my_vec); 4 my_vec.push(1); 5 my_vec.push(2); 6 my_vec.push(3); 7 println!("添加元素 1, 2, 3 : {:?}", my_vec); 8 my_vec.pop(); 9 println!("弹出的值: {}", 3); 10 println!("最后一个索引处弹出的元素 : {:?}", my_vec); 11 my_vec.remove(1); 12 println!("移除的值: {}", 2); 13 println!("索引 1 处移除的元素 : {:?}", my_vec); 14 println!("向量的大小是 :{}", my_vec.len()); 15 println!("向量是否包含 1 : {}", my_vec.contains(&1)); 16}
注意: 使用
.contains方法时,需借用该值。 关于这一点的原因将在后续章节讨论不同类型的借用操作时更加清晰。
测验
测试你对 Rust 中向量基础知识的理解。
现在你已经掌握了向量的基础知识,接下来请学习向量的方法。
Quiz
单选题
向量是可调整大小的数组。
1 / 2