【问题标题】:How to find to order a vector of tuples based on the last value of the tuple, with rust? [duplicate]rust - 如何根据元组的最后一个值找到对元组向量进行排序? [复制]
【发布时间】:2021-12-13 21:50:11
【问题描述】:

如何根据元组的最后一个值(f64)找到对元组向量进行排序,并带有 rust?我有一个带有元组的大向量,所以我正在寻找一种有效的方法来订购这个向量。

pub fn main() {
    let mut results = vec![
        ("a".to_string(), 50,  5.0),
        ("b".to_string(), 70, 4.0),
        ("c".to_string(), 40, 10.0)
    ];
}

【问题讨论】:

  • 只循环遍历向量...
  • @Netwave 抱歉,我已经改写了我的问题。
  • @Chris 不是真的,它与元组无关。答案也与整数有关。
  • 您可能会在该问题及其答案中找到有用的信息,尤其是有关 sort_by 的信息。
  • 链接副本上的这个other answer 解释了如果您的类型本身不可排序或者如果您需要自定义排序规则,您需要做什么。

标签: rust


【解决方案1】:

您可以使用sort_byf64::partial_cmp 订购它们:

pub fn main() {
    let mut results = vec![
        ("a".to_string(), 50,  5.0),
        ("b".to_string(), 70, 4.0),
        ("c".to_string(), 40, 10.0)
    ];

    results.sort_by(|a, b| a.2.partial_cmp(&b.2).unwrap());
    
    println!("{:?}", results);
}

这将使infNaN 等值出现恐慌,因为它们无法排序,但如果需要,这些情况应该很容易在闭包之外处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多