rust - 如何在不循环的情况下计算具有某个值的向量中的元素?

标签 rust

如何在不使用循环的情况下计算具有特定值(例如 91)的向量(例如 [91, 55, 77, 91])中的元素(如下图)?

fn count_eq(vec: &Vec<i64>, num: i64) -> i64 {
    let mut counter = 0;
    for i in vec {
        if *i == num {
            counter += 1;
        }
    }
    return counter;
}

fn main() {
    let v = vec![91, 55, 77, 91];
    println!("count 91: {}", count_eq(&v, 91));
}

最佳答案

您可以使用 Iterator::filter然后 count它:

fn main() {
    let v = vec![91, 55, 77, 91];
    println!("count 91: {}", v.iter().filter(|&n| *n == 91).count());
}

关于rust - 如何在不循环的情况下计算具有某个值的向量中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45353757/

相关文章:

rust - 如何正确使用特征对象,可变迭代可变特征对象容器,同时改变容器本身?

rust - 如何迭代 Bevy 查询并保留对迭代值的引用以便稍后使用它?

macros - Rust 中的过程宏解析异常

unit-testing - 为什么我不能运行 main() 中定义的#[test]?

python - 如何从 Python 调用 Rust 异步方法?

linked-list - 用尾指针编写链表的惯用方法是什么?

rust - 在Rust中存储包含闭包的结构的向量

scope - 重新绑定(bind)在 for 循环中不起作用的变量

rust - 在循环中使用read_line时出现奇怪的行为

rust - 仅由不安全代码块组成的 Rust 函数是否有任何目的?