2017-07-27 31 views
3

如何計算具有特定值(例如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)); 
} 
+5

[?爲什麼不鼓勵接受一個String(String)或VEC(VEC)作爲函數參數的引用(HTTPS ://stackoverflow.com/q/40006219/155423) – Shepmaster

回答

9

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

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