Rust:Vector
一、Vector 基础特性
- 动态大小:可在运行时增长或缩小
- 堆分配:元素存储在堆内存中
- 类型安全:所有元素必须是相同类型
T
- 所有权管理:Vector 拥有其元素的所有权
二、创建 Vector 的多种方式
1. 使用 Vec::new()
1 |
|
2. 使用 vec!
宏(推荐)
1 |
|
3. 从迭代器创建
1 |
|
4. 预分配容量
1 |
|
三、核心操作与常用方法
1. 添加元素
1 |
|
2. 移除元素
1 |
|
3. 访问元素
1 |
|
4. 修改元素
1 |
|
四、遍历与迭代
1. 只读迭代
1 |
|
2. 可变迭代
1 |
|
3. 获取索引和值
1 |
|
4. 使用迭代器方法
1 |
|
五、内存管理与性能优化
1. 容量与长度
1 |
|
2. 手动管理内存
1 |
|
六、高级用法
1. 存储不同类型(使用枚举)
1 |
|
2. 多维 Vector
1 |
|
3. 向量切片
1 |
|
4. 排序和搜索
1 |
|
七、常见使用场景
1. 读取文件内容
1 |
|
2. 命令行参数处理
1 |
|
3. 高效数据处理
1 |
|
八、性能注意事项
- push/pop 操作:平均 O(1) 时间复杂度
- 插入/删除中间元素:O(n) 时间复杂度
- 索引访问:O(1) 时间复杂度
- 搜索未排序数据:O(n) 时间复杂度
- 扩容成本:当容量不足时,需要重新分配内存和复制元素
九、最佳实践
- 优先使用
vec!
宏:简洁且高效 - 预分配容量:当知道大致大小时,使用
Vec::with_capacity()
- 安全访问:优先使用
get()
而不是直接索引 - 迭代代替索引:更安全且通常更高效
- 复用内存:使用
clear()
清空内容但保留容量
1 |
|
十、与其他集合对比
特性 | Vector (Vec<T> ) |
数组 ([T; N] ) |
切片 (&[T] ) |
---|---|---|---|
大小 | 动态可变 | 固定 | 动态但不可变 |
内存位置 | 堆 | 栈 | 借用 |
所有权 | 拥有元素 | 拥有元素 | 借用元素 |
索引访问 | O(1) | O(1) | O(1) |
添加元素 | O(1) 均摊 | 不可能 | 不可能 |
适用场景 | 动态集合、未知大小数据 | 固定大小、性能关键区 | 函数参数、视图 |
Rust:Vector
http://blog.luliang.online/2025/09/26/Rust(三)/