MST

星途 面试题库

面试题:Rust数组迭代之复杂操作及性能考量

假设有一个包含10000个随机整数的Rust数组,要求通过迭代找出所有能被3整除且大于100的数,并将这些数的平方值收集到一个新的`Vec`中。你需要考虑性能优化,在代码实现中使用合适的迭代器方法(如`filter`、`map`等),并解释为什么选择这些方法而不是其他可能的迭代方式。
28.5万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn main() {
    let numbers: Vec<i32> = (0..10000).map(|_| rand::random::<i32>()).collect();
    let result: Vec<i32> = numbers.iter()
        .filter(|&&num| num > 100 && num % 3 == 0)
        .map(|&num| num * num)
        .collect();
    println!("{:?}", result);
}

选择filtermap方法是因为它们采用了链式调用的方式,能够以声明式的风格表达复杂的迭代逻辑,提高代码的可读性。从性能角度看,这两个方法都是惰性求值的,只有在调用collect时才会真正执行迭代操作,减少了不必要的中间数据存储,提高了效率。相比于传统的for循环手动迭代,链式调用迭代器方法的代码更简洁且性能更优,在处理大数据集时优势明显。