本文簡要介紹rust語言中 std::collections::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.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 VecDeque.drain用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::collections::VecDeque.make_contiguous。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。