我想从 Vec
中删除一些元素,但是 vec.iter().filter().collect()
使用借来的项目创建了一个新向量.
我想在不分配额外内存的情况下改变原始的 Vec
(并将删除元素的内存保留为向量的额外容量)。
最佳答案
如果要删除元素,可以使用retain()
,如果闭包返回 false
,则从向量中删除元素:
let mut vec = vec![1, 2, 3, 4];
vec.retain(|&x| x % 2 == 0);
assert_eq!(vec, [2, 4]);
如果您想就地修改元素,您必须在 for x in vec.iter_mut()
中执行此操作。
关于iterator - 是否可以就地过滤矢量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913384/