iterator - 是否可以就地过滤矢量?

标签 iterator rust

我想从 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/

相关文章:

c++ - 无法满足 C++ 范围要求自定义容器

rust - 在单个图像 Rust 上执行多个图像::imageops 的最快方法

image-processing - 如何将 DynamicImage 转换为 Base64?

pointers - 如何用 Rust 编写一个合适的 map 函数?

rust - 循环中的多个可变引用

python - 将 glob.iglob() 结果分配给列表

java - 如何使用迭代器遍历二维 ArrayList?

stream - 使用 PhantomData 和 unsafe 将流式迭代器作为普通迭代器处理

rust - 有没有办法在 Rust 中定义多参数特征?

iterator - 我如何在 rust 中使用 Iterator 的 #map 和 #fold?