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


Rust VecDeque.binary_search_by_key用法及代码示例


本文简要介绍rust语言中 std::collections::VecDeque.binary_search_by_key 的用法。

用法

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

二进制搜索这个排序的VecDeque 使用 key 提取函数。

假设 VecDeque 是按键排序的,例如 make_contiguous().sort_by_key() 使用相同的键提取函数。

如果找到该值,则返回 Result::Ok ,其中包含匹配元素的索引。如果有多个匹配项,则可以返回任何一个匹配项。如果未找到该值,则返回 Result::Err ,其中包含可以插入匹配元素的索引,同时保持排序顺序。

另请参见 binary_search binary_search_by partition_point

例子

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

use std::collections::VecDeque;

let deque: VecDeque<_> = vec![(0, 0), (2, 1), (4, 1), (5, 1),
         (3, 1), (1, 2), (2, 3), (4, 5), (5, 8), (3, 13),
         (1, 21), (2, 34), (4, 55)].into();

assert_eq!(deque.binary_search_by_key(&13, |&(a, b)| b),  Ok(9));
assert_eq!(deque.binary_search_by_key(&4, |&(a, b)| b),   Err(7));
assert_eq!(deque.binary_search_by_key(&100, |&(a, b)| b), Err(13));
let r = deque.binary_search_by_key(&1, |&(a, b)| b);
assert!(matches!(r, Ok(1..=4)));

相关用法


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