Ric*_*ram 6 arrays iterator loops vector rust
我知道下面的代码有效:
// method 1
fn vec_loop(mut v: Vec<i32>) -> Vec<i32> {
v.iter().map(|x| x * 2).collect()
}
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否可以这样做:
// method 2
fn vec_loop(mut v: Vec<i32>) -> Vec<i32> {
for i in v.iter_mut() {
// TODO: Fill this up so that each element in the Vec `v` is multiplied by two.
}
v
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我无法使用 运行迭代。iter_mut()如果出现以下情况,我将不胜感激:
您可以写入i,就像写入 C 指针一样:
fn vec_loop(mut v: Vec<i32>) -> Vec<i32> {
for i in v.iter_mut() {
*i *= 2;
}
v
}
fn main() {
let mut vec = vec![1,2,3,4,5];
println!("{:?}", vec_loop(vec));
}
Run Code Online (Sandbox Code Playgroud)
至于性能,你总是可以衡量的!另外,collect应该分配一个新的向量,而循环方法会就地修改现有内存,因此在大向量上应该更快。对我来说,v.iter().map(|x| x * 2).collect()看起来更干净,我会用它来提高可读性。