本文简要介绍rust语言中 std::collections::VecDeque.binary_search
的用法。
用法
pub fn binary_search(&self, x: &T) -> Result<usize, usize> where T: Ord,
二进制在这个排序的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 VecDeque.binary_search_by_key用法及代码示例
- Rust VecDeque.binary_search_by用法及代码示例
- 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。