當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。