rust - 从Vec移除一系列元素

标签 rust

我在Rust中有一个100个项目的Vec,我需要删除索引在10到30之间的每个项目。一种方法是单独删除每个元素,如下所示:

for i in 10..30 {
    vec.remove(i);
}
但是,这会导致每个被删除的项目产生内存,因为每次删除元素时都必须向左移动Vec的其余部分。我如何一次只从Vec中删除整个项目范围,而只造成一次memcpy?

最佳答案

How do I remove a whole range of items from a Vec in one shot


使用 Vec::drain :
vec.drain(10..30);

关于rust - 从Vec移除一系列元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66513764/

相关文章:

rust - (Rust) 有没有办法为重载的运算符自动借用?

reference - 是否可以在不使用类型参数的情况下将 Arc<RwLock<&Fn()>> 传递给函数?

rust - Gtk::SpinButton get_value_as_int 给出 step_increment 作为结果

rust - 如何获取 BTreeSet 中元素的下限和上限?

rust - 在Bevy Engine中,如何在for-each系统中使用&mut查询?

rust - 有没有更好的方法来为拥有 DIsplay 事物集合的结构实现 Display?

macros - 为什么此宏会导致未解析的名称错误?

rust - 为什么 Fn 派生自 FnMut(派生自 FnOnce)?

rust - 函数调用中的自动借用

multithreading - 在线程中使用特征方法