相关疑难解决方法(0)

如何在Vec of Floats上进行二进制搜索?

如果你有,Vec<u32>你会使用该slice::binary_search方法.

由于我不理解的原因,f32并且f64没有实施Ord.由于基本类型来自标准库,因此您无法Ord自己实现它们,因此您似乎无法使用此方法.

你怎么能有效地做到这一点?

我真的必须包装f64一个包装器结构并Ord在其上实现吗?这样做似乎非常痛苦,并且涉及大量transmute不安全地来回传播数据块,实际上是没有理由的.

rust

16
推荐指数
3
解决办法
5764
查看次数

如何按索引对 Vec 进行排序(重新排序)?

我想Vec按照 Rust 中预定义的顺序对就地进行排序(重新排序)。

例如:

let i = vec![0, 3, 2, 1];
let mut v = vec!["a", "b", "c", "d"];
v.sort_by_indices(&i);

assert_eq!(v, &["a", "d", "c", "b"]);
Run Code Online (Sandbox Code Playgroud)

我想就地执行此操作。在我的用例中,v占用大量内存。

这个问题是如何获取对 Vec 进行排序的索引的后续问题?

sorting rust

5
推荐指数
1
解决办法
2142
查看次数

如何对“NaN”进行排序,使其大于任何其他数字,并等于任何其他“NaN”?

我正在根据两个标准对向量进行排序。第一个是浮点数NaN,第二个是字符串,用于按字典顺序断开关系。

vec.sort_by(|a, b| {
    match (foo(a) as f64 / bar(a) as f64).partial_cmp(&(foo(b) as f64 / bar(b) as f64)) {
        Some(x) => {
            Ordering::Equal => name(a).cmp(name(b)),
            other => other,
        }
        None() => {
            //Not sure what to put here.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

foo(a)返回 int > 0, bar(a)返回 int >= 0, name(a)返回& String.

如何排序NaN,使其大于任何其他数字,并等于任何其他数字NaN(字典顺序决胜局)?

sorting floating-point rust

4
推荐指数
1
解决办法
790
查看次数

标签 统计

rust ×3

sorting ×2

floating-point ×1