Что такое deque?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Deque — это структура данных, в которой вставка и удаление возможны с обоих концов. Обычно важно показать, что это компромисс между стеком и очередью. Для C/C++ полезно понимать, где deque удобнее массива или списка по практике.
Определение:
Deque (double-ended queue) — это двусторонняя очередь: элементы можно добавлять и удалять как в начале, так и в конце. В отличие от обычной очереди, она не ограничивает операции одним концом. В C++ std::deque — стандартный контейнер, который поддерживает быстрый доступ по индексу и эффективные операции на концах.
Пример использования:
Deque удобно использовать, например, в алгоритме скользящего окна, когда нужно быстро добавлять новый элемент справа и удалять старый слева.
#include <deque>
#include <iostream>
int main() {
std::deque<int> d;
d.push_back(10); // [10]
d.push_back(20); // [10, 20]
d.push_front(5); // [5, 10, 20]
std::cout << d.front() << "\n"; // 5
std::cout << d.back() << "\n"; // 20
d.pop_front(); // [10, 20]
d.pop_back(); // [10]
return 0;
}
Пояснение кода:
std::deque<int> d;— создаётся deque для целых чисел.push_back(10)иpush_back(20)— добавление элементов в конец.push_front(5)— добавление элемента в начало.front()иback()— доступ к первому и последнему элементу.pop_front()иpop_back()— удаление с начала и конца.
В этом примере видно главное свойство deque: можно одинаково удобно работать с обоими концами контейнера.
Ключевые моменты:
- Deque поддерживает вставку и удаление с начала и конца.
- В C++
std::deque— стандартный контейнер из STL. - Он удобен, когда нужны операции на обоих концах, например в очередях задач или sliding window.
- По сравнению со
std::vectordeque обычно лучше подходит для частых операций в начале. - По сравнению со списком deque обычно удобнее, если нужен быстрый доступ по индексу.