Шаг 334.
Библиотека STL.
Специальные контейнеры. Очереди (общие сведения)

    На этом шаге мы приведем общие сведения об очереди.

    Класс queue<> реализует очередь, работающую по принципу "первым поступил, первым обслужен" (FIFO). Функция push() заносит элементы в очередь (рисунок 1), а функция рор() удаляет элементы в порядке их вставки.


Рис.1. Интерфейс очереди

    Следовательно, очередь может рассматриваться как классический буфер данных.

    Чтобы использовать очередь в программе, необходимо включить заголовочный файл <queue>:

  #include <queue>

    В файле <queue> класс queue определяется следующим образом:

namespace std {
  template <class T,
            class Container = deque<T> > class queue;
}

    Первый параметр шаблона определяет тип элементов. Необязательный второй параметр шаблона определяет контейнер, который будет использоваться внутренней реализацией для хранения элементов. По умолчанию это дек.

    Например, следующее объявление определяет очередь со строковыми элементами:

  std::queue<std::string> buffer;  // Строковая очередь

    Реализация очереди просто отображает операции с очередью на соответствующие операции с используемым контейнером (рисунок 2).


Рис.2. Внутренний интерфейс очереди

    Допускается применение любого класса последовательного контейнера с поддержкой функций front(), back(), push_back() и pop_front(). Например, элементы очереди могут храниться в списке:

  std::queue<std::string,std::list<std::string> > buffer;

    На следующем шаге мы рассмотрим основной интерфейс очереди.




Предыдущий шаг Содержание Следующий шаг