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


Rust VecDeque.binary_search用法及代碼示例


本文簡要介紹rust語言中 std::collections::VecDeque.binary_search 的用法。

用法

二進製在這個排序的VecDeque 中搜索給定的元素。

如果找到該值,則返回 Result::Ok ,其中包含匹配元素的索引。如果有多個匹配項,則可以返回任何一個匹配項。如果未找到該值,則返回 Result::Err ,其中包含可以插入匹配元素的索引,同時保持排序順序。

另請參見 binary_search_by binary_search_by_key partition_point

例子

查找一係列四個元素。第一個被發現,具有唯一確定的位置;沒有找到第二個和第三個;第四個可以匹配 [1, 4] 中的任何位置。

use std::collections::VecDeque;

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

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

如果要將項目插入已排序的 VecDeque ,同時保持排序順序:

use std::collections::VecDeque;

let mut deque: VecDeque<_> = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55].into();
let num = 42;
let idx = deque.binary_search(&num).unwrap_or_else(|x| x);
deque.insert(idx, num);
assert_eq!(deque, &[0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::collections::VecDeque.binary_search。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。