Слияние двух std :: queue - PullRequest
4 голосов
/ 03 мая 2011

Есть ли в stl функция, которая объединяет два std::queue объекта?

Ответы [ 2 ]

5 голосов
/ 03 мая 2011

Адаптер std::queue не поддерживает итерацию, поэтому для этого вам фактически потребуется собственный метод. Но, учитывая, что вам нужна эта функциональность, вы, вероятно, должны рассмотреть другой контейнер. Если вам нужен произвольный доступ, вероятно, std::deque. Если вам нужен только передний / задний доступ, например, очередь, рассмотрите std::list, который может быть splice d вместе в постоянном времени.

0 голосов
/ 03 мая 2011

Кажется, что в stl нет никаких опций, но я могу подумать о некоторых других вещах, которые вы можете написать сами:

  1. Напишите свой собственный код для чтения одной очереди в другую, но это O (n).

  2. Используйте std::copy для управления базовыми std::deque контейнерами, опять же O (n).

  3. Создайте собственный контейнер, который реализован в терминах std::queue, но может поддерживать несколько очередей для имитации объединения в O (1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...