本文简要介绍rust语言中 alloc::collections::vec_deque::VecDeque.make_contiguous
的用法。
用法
pub fn make_contiguous(&mut self) -> &mut [T]
重新排列此双端队列的内部存储,使其成为一个连续的切片,然后返回。
此方法不分配也不改变插入元素的顺序。由于它返回一个可变切片,因此可用于对双端队列进行排序。
一旦内部存储连续, as_slices
和 as_mut_slices
方法将在单个切片中返回VecDeque
的全部内容。
例子
对双端队列的内容进行排序。
use std::collections::VecDeque;
let mut buf = VecDeque::with_capacity(15);
buf.push_back(2);
buf.push_back(1);
buf.push_front(3);
// sorting the deque
buf.make_contiguous().sort();
assert_eq!(buf.as_slices(), (&[1, 2, 3] as &[_], &[] as &[_]));
// sorting it in reverse order
buf.make_contiguous().sort_by(|a, b| b.cmp(a));
assert_eq!(buf.as_slices(), (&[3, 2, 1] as &[_], &[] as &[_]));
获得对连续切片的不可变访问。
use std::collections::VecDeque;
let mut buf = VecDeque::new();
buf.push_back(2);
buf.push_back(1);
buf.push_front(3);
buf.make_contiguous();
if let (slice, &[]) = buf.as_slices() {
// we can now be sure that `slice` contains all elements of the deque,
// while still having immutable access to `buf`.
assert_eq!(buf.len(), slice.len());
assert_eq!(slice, &[3, 2, 1] as &[_]);
}
相关用法
- Rust VecDeque.make_contiguous用法及代码示例
- Rust VecDeque.binary_search_by_key用法及代码示例
- 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.back用法及代码示例
- 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 VecDeque.back_mut用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 alloc::collections::vec_deque::VecDeque.make_contiguous。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。