当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust slice.binary_search_by用法及代码示例


本文简要介绍rust语言中 slice.binary_search_by 的用法。

用法

pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<usize, usize> where    F: FnMut(&'a T) -> Ordering,

二进制使用比较器函数搜索这个排序的切片。

比较器函数应实现与底层切片的排序顺序一致的顺序,返回一个顺序代码,指示其参数是 LessEqual 还是 Greater 所需的目标。

如果找到该值,则返回 Result::Ok ,其中包含匹配元素的索引。如果有多个匹配项,则可以返回任何一个匹配项。该索引是确定性选择的,但在未来的 Rust 版本中可能会发生变化。如果未找到该值,则返回 Result::Err ,其中包含可以插入匹配元素的索引,同时保持排序顺序。

另请参见 binary_search binary_search_by_key partition_point

例子

查找一系列四个元素。第一个被发现,具有唯一确定的位置;没有找到第二个和第三个;第四个可以匹配 [1, 4] 中的任何位置。

let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];

let seek = 13;
assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Ok(9));
let seek = 4;
assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(7));
let seek = 100;
assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(13));
let seek = 1;
let r = s.binary_search_by(|probe| probe.cmp(&seek));
assert!(match r { Ok(1..=4) => true, _ => false, });

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 slice.binary_search_by。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。