rust学习_迭代器

迭代器1.高效便利数据的方式
2.不需要管理或者循环索引
3.迭代过程中
不能修改元素
如何创建迭代器1.创建借用迭代器
     let  vec = vec![1,2,3.4]
     let  iter = vec.iter();
2.创建可变借用迭代器(允许在遍历过程中修改集合元素 )
     let mut vec = vec![1,2,3,4,5]
     let iter_mut = vec
.iter_mut();
     for num in iter_mut {
        *num *= 2; //修改每个元素
     }
3.创建所有权迭代器
    let vec = vec![1,2,3,4.5]
    let into_iter = vec.
into_iter();
    for num in iter {
        println!("{}",num);
    }
    // 下面的代码会导致编译错误,因为 `vec` 已经被 `into_iter` 消耗了
    // println!("{:?}", vec); // 编译错误:borrow of moved value
常见的迭代器方法 1.使用map和filter
  fn main() {
    let numbers = vec![1, 2, 3, 4, 5];

    // 创建一个迭代器,对每个元素乘以 2
    let doubled: Vec<i32> = numbers.iter().map(|x| x * 2).collect();  //collect:将迭代器中的元素收集到一个集合中

    // 创建一个迭代器,筛选出偶数
    let even_numbers: Vec<i32> = numbers.into_iter().filter(|x| x % 2 == 0).collect();

    println!("Doubled: {:?}", doubled);
    println!("Even numbers: {:?}", even_numbers);
  }

2.使用fold计算总和
fn main() {
    let numbers = vec![1, 2, 3, 4, 5];

    // 使用 fold 计算总和
    let sum: i32 = numbers.iter().
fold(0, |acc, &x| acc + x);  //fold:将迭代器中的元素累积成一个单一的值

    println!("Sum: {}", sum);
}

3.迭代器的链式调用
fn main() {
    let numbers = vec![1, 2, 3, 4, 5];

    // 链式调用:筛选出偶数,然后对每个元素乘以 2,最后收集到一个 Vec 中
    let result: Vec<i32> = numbers.into_iter()
                                  .filter(|x| x % 2 == 0)
                                  .map(|x| x * 2)
                                  .collect();

    println!("Result: {:?}", result);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

simper_zxb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值