Я начал работать с Qt некоторое время назад и использовал QQueue. в качестве замены для std::queue. Хотя сегодня я понял, что могу использовать pop_front, pop_back, push_front и push_back из QList класс на объекте QQueue. Задаваясь вопросом, почему вы можете использовать эти функции (особенно pop_back и push_front) в очереди, я проверил документацию Qt и понял, что QQueue наследует QList.
Для меня основной интерес очереди состоит в том, чтобы действовать как очередь: ставить вещи в очередь в конце и удалять из очереди в начале. Но когда я продолжил читать документацию, я понял, что постановка в очередь и dequeue были просто эквивалентами добавлять и takeFirst класса QList. Даже функция head идентична функции первая функция QList. Кроме того, возможность использовать такие функции, как pop_back и push_front, полностью ломает для меня изначальную логику очереди, а сама документация представляет класс QQueue как контейнер очереди:
Класс QQueue — это универсальный контейнер, предоставляющий очередь.
QQueue — это один из универсальных классов контейнеров Qt. Он реализует структуру данных очереди для элементов одного типа.
Очередь — это структура «первым пришел — первым обслужен» (FIFO). Элементы добавляются в хвост очереди с помощью enqueue() и извлекаются из головы с помощью dequeue(). Функция head() обеспечивает доступ к элементу заголовка, не удаляя его.
Есть ли что-то, что я упускаю из виду о цели существования класса QQueue? Под этим я подразумеваю, почему этот контейнер очереди был создан, чтобы он мог делать больше, чем должна делать очередь? И поскольку класс QQueue, кажется, может работать точно так же, как QList, есть ли какая-то причина использовать QQueue вместо QList?