rust - 逐个元素比较 2 个向量或字符串的最佳方法是什么?

标签 rust

在 Rust 中逐个元素比较 2 个向量或字符串的最佳方法是什么,同时能够对每对元素进行处理?例如,如果您想计算不同元素的数量。这是我正在使用的:

let mut diff_count: i32 = 0i32;
for (x, y) in a.chars().zip(b.chars()) {
    if x != y {
        diff_count += 1i32;
    }
}

这是正确的方法还是有更规范的方法?

最佳答案

要获取匹配元素的数量,我可能会使用 filtercount

fn main() {
    let a = "Hello";
    let b = "World";

    let matching = a.chars().zip(b.chars()).filter(|&(a, b)| a == b).count();
    println!("{}", matching);

    let a = [1, 2, 3, 4, 5];
    let b = [1, 1, 3, 3, 5];

    let matching = a.iter().zip(&b).filter(|&(a, b)| a == b).count();
    println!("{}", matching);
}
  • Iterator::zip采用两个迭代器并生成每个迭代器值的元组的另一个迭代器。
  • Iterator::filter获取对迭代器值的引用并丢弃谓词闭包返回 false 的任何值。这将执行比较。
  • Iterator::count计算迭代器中元素的数量。

请注意,Iterator::zip一个 迭代器耗尽时停止迭代。如果您需要不同的行为,您可能也对 Itertools::zip_longestItertools::zip_eq .

关于rust - 逐个元素比较 2 个向量或字符串的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504514/

相关文章:

c++ - 将 Cpp 转换为 Rust,处理全局静态对象

rust - 如何在Rust中重载分配操作?

java - 为什么 Rust 原生库在调用函数时会随机崩溃?

Rust:对向量中结构的多态调用

arrays - 用于重复数组元素的 Rust 宏

rust - 在Rust教程代码中获取 “error[E0599]: no method named write_fmt found”错误

rust - 从结构方法中创建和分配引用数据

rust - 无法将向量值分配给struct : expected one of 8 possible tokens中的字段

rust - 如何修改 actix-web 1.0 中间件中的响应主体?

compiler-errors - 将 BoxStream 转换为 BoxFuture