Класс VecDeque
Класс VecDeque - это двусторонняя очередь
из стандартной библиотеки Rust. В отличие от
обычного вектора, VecDeque позволяет
добавлять и удалять элементы как с начала, так и
с конца за константное время. Внутри он
реализован как кольцевой буфер, что делает его
эффективным для использования в качестве
очереди или стека с двумя концами. Элементы
хранятся в порядке добавления, а доступ к ним
возможен по индексу.
Синтаксис
use std::collections::VecDeque;
let mut deque: VecDeque<T> = VecDeque::new();
Пример
Давайте создадим двустороннюю очередь и добавим элементы с обоих концов:
use std::collections::VecDeque;
fn main()
{
let mut deque = VecDeque::new();
deque.push_back(1);
deque.push_back(2);
deque.push_front(0);
println!("{:?}", deque);
}
Результат выполнения кода:
[0, 1, 2]
Пример
Давайте извлечём элементы с обоих концов очереди:
use std::collections::VecDeque;
fn main()
{
let mut deque = VecDeque::new();
deque.push_back(1);
deque.push_back(2);
deque.push_back(3);
let front = deque.pop_front();
let back = deque.pop_back();
println!("front: {:?}", front);
println!("back: {:?}", back);
println!("deque: {:?}", deque);
}
Результат выполнения кода:
front: Some(1)
back: Some(3)
deque: [2]
Пример
Давайте получим ссылки на первый и последний элементы очереди без их удаления:
use std::collections::VecDeque;
fn main()
{
let mut deque = VecDeque::new();
deque.push_back("abcde");
deque.push_back("12345");
println!("front: {:?}", deque.front());
println!("back: {:?}", deque.back());
}
Результат выполнения кода:
front: Some("abcde")
back: Some("12345")
Смотрите также
-
метод
new,
который создаёт новую пустую двустороннюю очередь -
метод
push_back,
который добавляет элемент в конец очереди -
метод
push_front,
который добавляет элемент в начало очереди -
метод
pop_front,
который удаляет и возвращает первый элемент очереди