Sobes.tech
Назад к вопросам
Junior
265
questionbank

Что такое 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::vector deque обычно лучше подходит для частых операций в начале.
  • По сравнению со списком deque обычно удобнее, если нужен быстрый доступ по индексу.