gpt4 book ai didi

rust - 将 std::cmp::Reverse 与 binary_search_by_key 结合使用

转载 作者:行者123 更新时间:2023-12-03 11:25:58 60 4
gpt4 key购买 nike

如何将 std::cmp::Reversebinary_search_by_key 一起使用?示例:Rust-Playground

Rust 的 Vec::binary_search_by_key 文档 says :

Assumes that the slice is sorted by the key, for instance with sort_by_key using the same key extraction function.

在下面的最小示例中,我使用了相同的提取函数——但没有成功。

use std::cmp::Reverse;

fn main() {
let mut v = vec![1, 2, 3, 4, 5];

v.sort_by_key(|&num| Reverse(num));
println!("{:?}", v);
let index = v.binary_search_by_key(&1, |&num| Reverse(num));
println!("Res: {:?}", index);
}

这会提示不匹配的类型:“预期的整数,找到了结构std::cmp::Reverse”。

error[E0308]: mismatched types
--> src/main.rs:8:51
|
8 | let index = v.binary_search_by_key(&1, |&num| Reverse(num));
| ^^^^^^^^^^^^ expected integer, found struct `std::cmp::Reverse`
|
= note: expected type `{integer}`
found struct `std::cmp::Reverse<{integer}>`

最佳答案

仔细检查函数签名给出了答案。

pub fn binary_search_by_key<'a, B, F>(
&'a self,
b: &B,
f: F
) -> Result<usize, usize> where
B: Ord,
F: FnMut(&'a T) -> B,

B是函数的返回值,也是第一个参数(在&self之后)。

因此我们还必须将 Reverse 添加到第一个参数:

v.binary_search_by_key(&Reverse(1), |&num| Reverse(num))

关于rust - 将 std::cmp::Reverse 与 binary_search_by_key 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64381478/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com