vector - 如何获取和替换 Rust Vec 中的值?
问题描述
我正在寻找的是一种替换方法:
pub fn replace(&mut self, index: usize, element: T) -> T
替换向量内索引位置处的元素并返回现有值。
调用 remove+insert 对我来说似乎很浪费。
解决方案
您可以在任何为您提供对其元素的可变引用的容器上轻松地模拟这一点std::mem::replace
:
fn main() {
let mut v = vec![1, 2, 3, 4, 5, 6];
let got = std::mem::replace(&mut v[3], 42);
println!("v = {:?}", v);
println!("got = {:?}", got);
}
(永久链接到操场)
结果:
v = [1, 2, 3, 42, 5, 6]
got = 4
在 的情况下Vec
,如果您想替换一系列元素,您会对该方法感兴趣,该方法splice
替换值并返回旧值。但是,对于单个值,它可能效率较低。
推荐阅读
- android - Jetpack 撰写更新列表元素
- angular - Angular:如果未提供子参数 id,则重定向到父级
- java - 有没有办法在java Pojo中保持字段的实际值?
- javascript - 替换时如何检查匹配的字符在字符串中是否有空格
- apache-spark - sparkContext.wholeTextFiles(location) 在执行操作之前不会为缺席路径抛出异常
- javascript - 使用 .load() 插入 html 文件时,javascript 无法识别元素并返回 null
- java - 为用户分配角色 Spring,Java
- python - 在函数参数中传递 python 操作
- xml - 嵌套 xsl 模板并将多个模板引用到同一个节点?
- sql - SQL 不创建表(刷新和重新启动没有帮助)