本文簡要介紹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 VecDeque.binary_search_by用法及代碼示例
- Rust VecDeque.binary_search用法及代碼示例
- Rust VecDeque.back用法及代碼示例
- Rust VecDeque.back_mut用法及代碼示例
- Rust VecDeque.rotate_left用法及代碼示例
- Rust VecDeque.remove用法及代碼示例
- Rust VecDeque.swap_remove_back用法及代碼示例
- Rust VecDeque.contains用法及代碼示例
- Rust VecDeque.iter用法及代碼示例
- Rust VecDeque.split_off用法及代碼示例
- Rust VecDeque.reserve_exact用法及代碼示例
- Rust VecDeque.capacity用法及代碼示例
- Rust VecDeque.is_empty用法及代碼示例
- Rust VecDeque.resize用法及代碼示例
- Rust VecDeque.new用法及代碼示例
- Rust VecDeque.resize_with用法及代碼示例
- Rust VecDeque.as_mut_slices用法及代碼示例
- Rust VecDeque.front用法及代碼示例
- Rust VecDeque.try_reserve_exact用法及代碼示例
- Rust VecDeque.clear用法及代碼示例
- Rust VecDeque.with_capacity_in用法及代碼示例
- Rust VecDeque.front_mut用法及代碼示例
- Rust VecDeque.try_reserve用法及代碼示例
- Rust VecDeque.new_in用法及代碼示例
- Rust VecDeque.shrink_to_fit用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::collections::VecDeque.binary_search_by_key。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。