我想从a中删除一些元素Vec,但是vec.iter().filter().collect()使用借来的项创建一个新的向量.
我想在Vec没有额外内存分配的情况下改变原始内容(并将已删除元素的内存保留为向量的额外容量).
我试图从向量中删除一个元素(如果它存在于其中):
use std::collections::HashMap;
fn test(map: HashMap<String, Vec<String>>, department: String, employee: String) {
let &mut list = map.get(&department).unwrap();
let index = list.iter().position(|x| x == &employee);
match index {
Some(i) => {
list.remove(i);
},
None => {
println!("No records of {} in {}!", &employee, &department);
},
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
use std::collections::HashMap;
fn test(map: HashMap<String, Vec<String>>, department: String, employee: String) {
let &mut list = map.get(&department).unwrap();
let index = list.iter().position(|x| x == &employee);
match index {
Some(i) => {
list.remove(i);
},
None => …Run Code Online (Sandbox Code Playgroud) 有没有办法在迭代时删除元素?这是一个代码示例:
for particle in &mut particles {
let mut delete = false;
// Do stuff...
if delete {
// Remove element from particles vector <-- THIS
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这种(脏)设计是不可能的.为了知道我需要删除哪个元素,假设我需要迭代以便删除向量中的某些元素,这是什么常见(优雅?)模式?如果重复,请随意关闭.
如何从字符串中删除所有空格?我可以想到一些显而易见的方法,例如遍历字符串并删除每个空白字符,或使用正则表达式,但是这些解决方案并不那么具有表现力或效率。什么是从字符串中删除所有空格的简单有效的方法?