我可以使用迭代器吗?

eii0000

嗨,我写了一个函数,将向量映射到区间[0,1]:

fn vec2interval(v: &Vec<f32>) -> Vec<f32> {
    let total: f32 = v.iter().sum();
    let mut interval: Vec<f32> = vec![0f32; v.len()];
    interval[0] = v[0] / total;
    for i in 1..v.len() {
        interval[i] = interval[i-1] + v[i] / total;
    }
    return interval;
}

有没有办法用迭代器做同样的事情?我写了以下内容,但速度较慢,需要for循环:

fn vec2interval(v: &Vec<f32>) -> Vec<f32> {
    let total: f32 = v.iter().sum();
    let mut interval: Vec<f32> = v
        .iter()
        .map(|x| x / total)
        .collect::<Vec<f32>>();
    for i in 1..v.len() {
        interval[i] = interval[i-1] + interval[i];
    }
    return interval;
}
Kitsu

scan 可以完成所有工作:

fn vec2interval(v: &Vec<f32>) -> Vec<f32> {
    let total: f32 = v.iter().sum();

    v.iter()
        .scan(0.0, |acc, x| {
            *acc += x / total;
            Some(*acc)
        })
        .collect()
}

另外,&[u8]最好使用slice()代替Vec<_>参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使用模板处理迭代器吗?

来自分类Dev

我可以使用不完整类型列表的迭代器吗?

来自分类Dev

在python中,我可以使用tee懒惰地生成迭代器的副本吗?

来自分类Dev

我可以使用null初始化迭代器吗?如果不是,为什么?

来自分类Dev

我可以使用数组迭代器执行与for循环相同的功能吗?

来自分类Dev

在python中,我可以使用tee懒惰地生成迭代器的副本吗?

来自分类Dev

Rust可以使用传递给函数的迭代器吗?

来自分类Dev

我可以使用C / C ++编译器吗?

来自分类Dev

我可以使用解释器更新 Conda 环境吗

来自分类Dev

我可以使用 wxpython 使用迭代创建大量按钮吗?

来自分类Dev

我可以使用LIMIT和OFFSET迭代地获取SELECT查询的结果吗?

来自分类Dev

我可以使用html()保存动态表单,而不是通过INPUT进行迭代吗?

来自分类Dev

在 Ruby 中,您可以使用 lambda 或 Proc 调用方法来调用迭代器吗?

来自分类Dev

我可以在std :: find_if的并行版本中使用非平凡的可迭代迭代器吗?

来自分类Dev

我可以使用python CSP吗?

来自分类Dev

我可以使用通配符替换吗

来自分类Dev

我可以使用RTF格式吗?

来自分类Dev

骨骼可以使用我的插件吗?

来自分类Dev

我可以使用寄存器作为循环计数器吗?

来自分类Dev

我可以使用无线路由器作为中继器吗?

来自分类Dev

我可以连接自己的路由器以使用ISP'路由器吗?

来自分类Dev

我可以使用分离器进行三重显示器设置吗?

来自分类Dev

我可以从多个线程的ArrayList中获取迭代器并安全地使用所有迭代器吗?

来自分类Dev

我可以使用光传感器来测量两次闪光之间的时间间隔吗?有什么我可以使用的课程吗?

来自分类Dev

在C ++中,可以使用集合的迭代器来查找集合的两个连续元素之间的差异吗?

来自分类Dev

可以使用我心爱的%格式器实现可变的填充字符和可变的宽度吗?

来自分类Dev

在我的Web服务器中可以使用符号链接吗?

来自分类Dev

我们可以使用JQuery或Javascript创建CSS选择器规则吗?

来自分类Dev

我们可以使用装饰器设计任何功能吗?

Related 相关文章

  1. 1

    我可以使用模板处理迭代器吗?

  2. 2

    我可以使用不完整类型列表的迭代器吗?

  3. 3

    在python中,我可以使用tee懒惰地生成迭代器的副本吗?

  4. 4

    我可以使用null初始化迭代器吗?如果不是,为什么?

  5. 5

    我可以使用数组迭代器执行与for循环相同的功能吗?

  6. 6

    在python中,我可以使用tee懒惰地生成迭代器的副本吗?

  7. 7

    Rust可以使用传递给函数的迭代器吗?

  8. 8

    我可以使用C / C ++编译器吗?

  9. 9

    我可以使用解释器更新 Conda 环境吗

  10. 10

    我可以使用 wxpython 使用迭代创建大量按钮吗?

  11. 11

    我可以使用LIMIT和OFFSET迭代地获取SELECT查询的结果吗?

  12. 12

    我可以使用html()保存动态表单,而不是通过INPUT进行迭代吗?

  13. 13

    在 Ruby 中,您可以使用 lambda 或 Proc 调用方法来调用迭代器吗?

  14. 14

    我可以在std :: find_if的并行版本中使用非平凡的可迭代迭代器吗?

  15. 15

    我可以使用python CSP吗?

  16. 16

    我可以使用通配符替换吗

  17. 17

    我可以使用RTF格式吗?

  18. 18

    骨骼可以使用我的插件吗?

  19. 19

    我可以使用寄存器作为循环计数器吗?

  20. 20

    我可以使用无线路由器作为中继器吗?

  21. 21

    我可以连接自己的路由器以使用ISP'路由器吗?

  22. 22

    我可以使用分离器进行三重显示器设置吗?

  23. 23

    我可以从多个线程的ArrayList中获取迭代器并安全地使用所有迭代器吗?

  24. 24

    我可以使用光传感器来测量两次闪光之间的时间间隔吗?有什么我可以使用的课程吗?

  25. 25

    在C ++中,可以使用集合的迭代器来查找集合的两个连续元素之间的差异吗?

  26. 26

    可以使用我心爱的%格式器实现可变的填充字符和可变的宽度吗?

  27. 27

    在我的Web服务器中可以使用符号链接吗?

  28. 28

    我们可以使用JQuery或Javascript创建CSS选择器规则吗?

  29. 29

    我们可以使用装饰器设计任何功能吗?

热门标签

归档